بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

نمایش تاریخ

138474  3 ماه پیش  3 ماه پیش
+1 0

میشه این کد رو توضیح بدین؟

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
        TextView Tx = (TextView)findViewById(R.id.textView1);
        Tx.setText(mydate);

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
HamidDev  3 ماه پیش
+1 0

یک متغیر در فضای وسیع حافظه ایجاد کردید به اسم : mydate
نوع این متغیر از جنس نوشتاری هست.
بعد از اینکه این متغیر رو مقدار بهش دادید ، ینی بهش گفتید محتوای تو چی باشه ، هر جایی از برنامه که بخواید میتونید اونو صدا بزنید و مقدارشو بخونید.
بعنوان نمونه شما متغیری به اسم names ینی "نامها" درست میکنید ، نوعش از نوع String قرار میدید ینی نوشتاری هست و بهش میگید نامها برابر باشه با : "علی و حسن و احمد و حسن".
هرجایی از برنامه شما متغیر "نامها" رو فرا بخونید ، به شما یک جمله یا مجموعی از کلمات میده که اینه : "علی و حسن و احمد و حسن".
مثلا میخوای در جایی چاپ کنید ، میتونیسید Print سپس names : چه چیزی چاپ میشه ؟ این : "علی و حسن و احمد و حسن".
یا میخواید تیتر برنامه تون باشه ، دیگه نمیاد بگید تیتر برنامه ی من رو "علی و حسن و احمد و حسن" بزار. بلکه میاد میگید تیتر برنامه ی من رو "نامها" بزار. برنامه میره میگرده و مقدار "نامها" رو بیرون میاره و اونو بعنوان تیتر شما درنظر میگیره که میشه : "علی و حسن و احمد و حسن".

خب الان شما یک متغیر دارید بنام mydate از نوع استرینگ ، باید داخلش چیزی از جنش استرینگ بریزید
شما قصد دارید یک زمان رو به شکل یک متن داخلش این استرینگ بریزید. ( وقتی میگیم به شکل متن ینی شما نمیتونید بعدا اونو بعلاوه ی یک روز دیگه بکنید و زمان فردا رو به شما بده ، البته میهش باید تبدیلاتی انجام بدید که بصورت مستقیم نمیشه )

گفتید متغیر استرینگی mydate من مقدارش باشه :
getTime()    ینی زمان رو بگیر. اما گرفتن زمان که جاوا نمیدونه از کجا براتون بگیره. باید بهش بگید برو از هسته ی خودت ، در بخش تاریخ و چیزای مربوط بهش ، اینو برام بگیر ، پس بهش میگید :
Calendar.getInstance().getTime()   میگه از داخل Calander (تقویم و چیزای مربوط بهش) یک اینستنسی بگیر به اینصورت getInstance()  ، حالا چه اینستنی ؟ getTime() به همین راحتی.
شما میتونید خیلی چیزای دیگه رو هم بگیرید.
میتونید بگید تایم نگیر ، ثانیه شو فقط بهم بده ، یا روزشو بهم بده یا ماهشو بهم بده.
ولی اینجا دارید اشاره میکنید که در هسته ی خودش ، از بخش تقویمها ، یه اینستنسی رو صدا بزن و اون اینستنس ، گرفتن زمان هست.

حالا از زمانی که شما گرفتید بصورت خام هست و همینجوری نمیشه بریزید داخل استرینگ mydate ، باید همین دستور :
Calendar.getInstance().getTime()  رو که زمان خام بهمون میده بریزیم داخل یه چیزی که این زمان رو برامون به متن تبدیل بکنه.

گمونم شما میتونید بدون اینکه بخواید این دستور رو داخل چیزی بریزید که نتیجه یاین دستور رو بصورت متن براتون در بیاره ، استفاده کنید ، منتها یک عدد اینطوری به شما میده : 196532121 ، اما زمانی که شما اونو در دستور زیر قرار میدید ، کاملا بصورت واضح به شما یک متن میده که به زیبایی میشه زمان رو ازش خوند. یادم نیست دقیقا چی میده ولی اگه زمان رو بده میشه : 23:10:30 ساعت 23 و 10 دقیقه و 30 ثانیه

حالا میاید دستور خام Calendar.getInstance().getTime()  رو در دستوری قرار میدید که نتیجه ش یک زمان زیبا هست. ینی همچینی چیزی میگیره : 196532121 و یه زمان زیبا تقدیم شما میکنه : 23:10:30
اون دستور اینه : 
java.text.DateFormat.getDateTimeInstance().format(196532121)

منظور از format(196532121)  اینه : format(Calendar.getInstance().getTime())

خب ما در بخش قبل یه عددی گرفتیم که از با اشاره به اینستنس از داخل تقویم بیرونش آوردیم. الان باید این عدد رو درجای درستی قرار بدیم تا اون زمان رو به شکل درست و حسابی بهمون تحویل بده ،
برای اینکار شما اشاره کردید به کلاس Java سپس از داخلش رفتید Text رو صدا زدید سپس DateFormat رو فرا خوندید و از داخل DateFormat یک دستوری رو فرا خوندید که کارش گرفتن زمان هست ، اتفاقا از همون نوعی که ما قبلا گرفته بودیم ، از نوع زمان اینستنسی ( ما اونجا گفته بودیم از تقویم بره یه اینستنسی رو فرا بخونه ، سپس گفتیم تایم رو بهمون بده ، پس تایم رو از داخل ایستنسهای تقویم گرفتیم ) بعد ، از داخل getDateTimeInstance فرمت رو صدا زدید و یک پرانتز باز و بسته کردید که زمان مخصوص بهش رو داخل قرار بدید ، خب بعدشم که داخل پرانتزهای فرمت ، چیزی که قبلا توضیح دادیم رو قرار میدید.
به همین راحتی.
در واقع شما باید بدونید که توی هسته ی جاوا پر از چیزهای به درد بخور هست ، هر چیز رو برای اینکه با چیز دیگه قاطی نشه ، اومدن در یک پوشه ی خاصی قرار دادن و نوعش هم یک چیز خاصی هست. مثلا توی مثال ما زمان از نوع ایستنس میگیریم و چون داریم توی mydate میریزیم ، و نوعشو استرینگ تعریف کرده بودیم ، پس باید یک متنی داخلش بریزیم. برای اینکه زمان اینستنسی که نوعش متن نیست رو داخل این متن بریزید ، از داخل جاوا رفتیم متن رو صدا زدیم سپس به داخل فرمت زمان رفتیم و بعدشم همینجوری که توضیح دادیم.

بصورت کلی گفتیم ما یک استرینگی داریم به اسم زمان من ( My Date ) که اسمشو میزاریم :  mydate
این متغیر برابر است با : مقداری که از اینجا بدست میاد : Calendar.getInstance().getTime()
اما این مقدار از نوع استرینگ نیست و نمیتونیم داخل استرینگ بریزیم ، پس باید تبدیل به متن بکنیم ،
برای اینکه تبدیل به متن بکنیم ، مقدار بالا رو میریزم درون این دستور : java.text.DateFormat.getDateTimeInstance().format()
اینجوری زمان کذایی رو تبدیل به متن کردیم و ریختیم داخل mydate
شما باید ببنید چه چیزی میخواید
وقتی شما یک زمان میخواید باید از داخل چیزی مثل تقویم ها بیرون بیاریدش ، سپس میرید داخل زمان میبینید از نوع چی هست ؟ اگه مثلا خخودش از نوع استرینگ یا از نوع date ( البته date رو ندیدم جاوا داشته باشه ، توی زبونهای دیگه دیدمش ، توی C بنظرم هست ) اگه از همون نوع متغیر نداشتیم ، باید تبدیلش بکنیم ، که در اینجا دیدیم زمان که بدست اومد از نوع استرینگ نبود ، استرینگ هم ینی متن ، پس اومدیم و زمان ور به شکل زیبایی تبدیل به متن کردیم.

امیدوارم مفدی بوده باشه.
موفق باشید


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .