تاریخ و زمان و تمامی موارد مرتبط با زمان (عملیات های زمان بندی شده و ...)، در برنامه نویسی اندروید

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست مطالب:

  1. محاسبه مقدار زمان اجرای یک سری دستور، در برنامه نویسی اندروید
  2. اجرای یک سری کد، بعد از گذشت یک مدت زمان مشخص، با روش CountDownTimer ، در برنامه نویسی اندروید
  3. متوقف کردن اجرای برنامه اندروید (اجرای کدها) به مدت چند ثانیه، با استفاده از روش SystemClock.sleep ، در برنامه نویسی اندروید
  4. متوقف کردن اجرای کدهای یک Thread ، با روش Thread.sleep ، در برنامه نویسی اندروید
  5. به دست آوردن تاریخ و زمان فعلی، با استفاده از کلاس SimpleDateFormat ، در برنامه نویسی اندروید
  6. اجرای یک سری کد، به صورت هر چند ثانیه یک بار (مثلا هر 5 ثانیه یک بار)، با ساخت یک thread جدید، در برنامه نویسی اندروید
  7. به دست آوردن زمان فعلی، به صورت یک عدد تنها، با روش System.currentTimeMillis ، در برنامه نویسی اندروید
  8. تبدیل عدد به دست آمده از روش System.currentTimeMillis برای زمان، به یک شکل مناسب برای نمایش تاریخ، با کلاس SimpleDateFormat ، در برنامه نویسی اندروید
  9. تبدیل یک تاریخ ساختاریافته (بر اساس سال و ماه و روز و ساعت و ...) به یک عدد تنها (بر اساس معیار Unix Epoch)، در برنامه نویسی اندروید


منبع: kelidestan
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
محاسبه مقدار زمان اجرای یک سری دستور، در برنامه نویسی اندروید

محاسبه مقدار زمان اجرای یک سری دستور، در برنامه نویسی اندروید

چنانچه نیاز دارید که میزان زمانی که برای اجرای یک سری دستور در برنامه اندروید گذشته است را محاسبه کنید، می توانید از کدهای زیر استفاده نمایید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]long[/B][/COLOR] time_start [COLOR=#339933]=[/COLOR] SystemClock.[COLOR=#006633]elapsedRealtime[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

[COLOR=#666666][I]// codes [/I][/COLOR]

[COLOR=#000066][B]long[/B][/COLOR] time_end [COLOR=#339933]=[/COLOR] SystemClock.[COLOR=#006633]elapsedRealtime[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000066][B]long[/B][/COLOR] diff [COLOR=#339933]=[/COLOR] [COLOR=#009900]([/COLOR]time_end [COLOR=#339933]-[/COLOR] time_start[COLOR=#009900])[/COLOR] [COLOR=#339933]/[/COLOR] [COLOR=#CC66CC]1000[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] Message [COLOR=#339933]=[/COLOR] [COLOR=#0000FF]"Time Difference: "[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#003399]String[/COLOR].[COLOR=#006633]valueOf[/COLOR][COLOR=#009900]([/COLOR]diff[COLOR=#009900])[/COLOR] [COLOR=#339933]+[/COLOR] [COLOR=#0000FF]" seconds"[/COLOR][COLOR=#339933];[/COLOR]
Toast.[COLOR=#006633]makeText[/COLOR][COLOR=#009900]([/COLOR]getApplicationContext[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR], Message, Toast.[COLOR=#006633]LENGTH_SHORT[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]show[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
که در آن، باید به جای عبارت // codes ، دستورات مورد نظرتان را بنویسید تا زمان اجرای آنها محاسبه شود و سپس به صورت یک پیام با زمان کوتاه، نمایش داده شود (روش Toast برای نمایش یک پیام با زمان کوتاه به کاربر می رود). میزان زمانی که نمایش داده می شود، بر حسب ثانیه است.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
اجرای یک سری کد، بعد از گذشت یک مدت زمان مشخص، با روش CountDownTimer ، در برنامه نویسی اندروید

اجرای یک سری کد، بعد از گذشت یک مدت زمان مشخص، با روش CountDownTimer ، در برنامه نویسی اندروید

ممکن است در مواردی، نیاز داشته باشیم که بخشی از کدها، بعد از گذشت یک مدت زمان مشخص اجرا شوند. برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]new[/B] CountDownTimer[COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR],[COLOR=#CC66CC]1000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
     @Override
     [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onTick[COLOR=#009900]([/COLOR][COLOR=#000066][B]long[/B][/COLOR] millisUntilFinished[COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR][COLOR=#009900]}[/COLOR] 

     @Override
         [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] onFinish[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
         [COLOR=#666666][I]// your code[/I][/COLOR]
     [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR].[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
کدهایی که قصد دارید بعد از یک مدت مشخص اجرا شوند را به جای عبارت // your code بنویسید.

به خط زیر از کدها دقت کنید :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]new[/B] CountDownTimer[COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR],[COLOR=#CC66CC]1000[/COLOR][COLOR=#009900])[/COLOR][/FONT]
[/FONT][/COLOR]
عدد 5000 برابر مدت زمانی است که باید بگذرد و بعد کدها اجرا شوند. واحد آن، میلی ثانیه می باشد و بنابراین عدد 5000 ، نشان دهنده 5 ثانیه است و بعد از گذشت 5 ثانیه، کدهای مورد نظرمان اجرا خواهند شد. شما به دلخواه می توانید این عدد را تغییر بدهید.یک نمونه عملی برای این کد، در تاپیک "ساخت امکانات جانبی (جستجو، لیست علاقه مندی، لوگو، منو و ...) برای برنامه اندروید" بیان شده است.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
متوقف کردن اجرای برنامه اندروید (اجرای کدها) به مدت چند ثانیه، با استفاده از روش SystemClock.sleep ، در برنامه نویسی اندروید

متوقف کردن اجرای برنامه اندروید (اجرای کدها) به مدت چند ثانیه، با استفاده از روش SystemClock.sleep ، در برنامه نویسی اندروید

فرض کنید بخواهیم اجرای برنامه اندروید به مدت چند ثانیه متوقف شود، برای این منظور، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]SystemClock.[COLOR=#006633]sleep[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، زمان توقف را برابر 5 ثانیه در نظر گرفته ایم (واحد آن، میلی ثانیه می باشد).

[h=4]نکته :[/h]این روش، بر روی دستورات قبل از خود نیز تاثیر می گذارد و باعث می شود که تعدادی از آنها هم با تاخیر اجرا شوند.

[h=4]نکته :[/h]این روش برای Thread اصلی برنامه اندروید (main Thread - UI Thread) نیز عمل می کند (اجرای آن را متوقف می کند).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
متوقف کردن اجرای کدهای یک Thread ، با روش Thread.sleep ، در برنامه نویسی اندروید

متوقف کردن اجرای کدهای یک Thread ، با روش Thread.sleep ، در برنامه نویسی اندروید

با استفاده از کدهای زیر می توانیم اجرای کدهای یک Thread را به مدت چند ثانیه، متوقف کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]try[/B] [COLOR=#009900]{[/COLOR]
    [COLOR=#003399]Thread[/COLOR].[COLOR=#006633]sleep[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]InterruptedException[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    [COLOR=#666666][I]// TODO Auto-generated catch block[/I][/COLOR]
    e.[COLOR=#006633]printStackTrace[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
در کد بالا، زمان توقف را برابر 5 ثانیه در نظر گرفته ایم (واحد آن، میلی ثانیه می باشد).

[h=4]نکته :[/h]این روش، بر روی دستورات قبل از خود نیز تاثیر می گذارد و باعث می شود که تعدادی از آنها هم با تاخیر اجرا شوند.

[h=4]نکته :[/h]این روش برای Thread اصلی برنامه اندروید (main Thread - UI Thread) نیز عمل می کند (اجرای آن را متوقف می کند).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به دست آوردن تاریخ و زمان فعلی، با استفاده از کلاس SimpleDateFormat ، در برنامه نویسی اندروید

به دست آوردن تاریخ و زمان فعلی، با استفاده از کلاس SimpleDateFormat ، در برنامه نویسی اندروید

با استفاده از کلاس SimpleDateFormat ، در برنامه نویسی اندروید، می توانیم تاریخ و زمان فعلی را به دست آوریم.فرض کنید که بخواهیم تاریخ و زمان فعلی را به صورت شکل کلی زیر در یک رشته (String) داشته باشیم (البته سال میلادی) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]ثانیه[COLOR=#339933]-[/COLOR]دقیقه[COLOR=#339933]-[/COLOR]ساعت[COLOR=#339933]-[/COLOR]روز[COLOR=#339933]-[/COLOR]ماه[COLOR=#339933]-[/COLOR]سال[/FONT]
[/FONT][/COLOR]
برای این منظور، کدهای زیر را اجرا می کنیم :

کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#003399]SimpleDateFormat[/COLOR] sdf [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]SimpleDateFormat[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"yyyy-MM-dd-HH-mm-ss"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] currentDateandTime [COLOR=#339933]=[/COLOR] sdf.[COLOR=#006633]format[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] [COLOR=#003399]Date[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین تاریخ و زمان فعلی، به همان شکلی که گفتیم، در یک متغیر از جنس رشته (String) و با نام currentDateandTime ذخیره می شود.دقت شود که شکل کلی را با عبارت زیر در کدها تعیین کرده ایم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]yyyy[COLOR=#339933]-[/COLOR]MM[COLOR=#339933]-[/COLOR]dd[COLOR=#339933]-[/COLOR]HH[COLOR=#339933]-[/COLOR]mm[COLOR=#339933]-[/COLOR]ss[/FONT]
[/FONT][/COLOR]
که در آن، مقادیر متناظر به صورت زیر می باشند :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]yyyy   [COLOR=#339933]-->[/COLOR]   سال [COLOR=#009900]([/COLOR]year[COLOR=#009900])[/COLOR]
MM   [COLOR=#339933]-->[/COLOR]   ماه [COLOR=#009900]([/COLOR]month[COLOR=#009900])[/COLOR]
dd   [COLOR=#339933]-->[/COLOR]   روز [COLOR=#009900]([/COLOR]day[COLOR=#009900])[/COLOR]
HH   [COLOR=#339933]-->[/COLOR]   ساعت [COLOR=#009900]([/COLOR]hour[COLOR=#009900])[/COLOR]
mm   [COLOR=#339933]-->[/COLOR]   دقیقه [COLOR=#009900]([/COLOR]minute[COLOR=#009900])[/COLOR]
ss   [COLOR=#339933]-->[/COLOR]   ثانیه [COLOR=#009900]([/COLOR]second[COLOR=#009900])[/COLOR][/FONT]
[/FONT][/COLOR]
بنابراین مثلا فرض کنید که بخواهیم تاریخ فعلی را به شکل زیر داشته باشیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]روز[COLOR=#339933]-[/COLOR]ماه[COLOR=#339933]-[/COLOR]سال[/FONT]
[/FONT][/COLOR]
برای این منظور، باید این بار عبارت را به شکل زیر تغییر بدهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]yyyy[COLOR=#339933]-[/COLOR]MM[COLOR=#339933]-[/COLOR]dd[/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
اجرای یک سری کد، به صورت هر چند ثانیه یک بار (مثلا هر 5 ثانیه یک بار)، با ساخت یک thread جدید، در برنامه نویسی اندروید

اجرای یک سری کد، به صورت هر چند ثانیه یک بار (مثلا هر 5 ثانیه یک بار)، با ساخت یک thread جدید، در برنامه نویسی اندروید

فرض کنید که قصد داریم یک سری کد، هر 5 ثانیه یک بار اجرا شوند. برای این منظور، چون نمی خواهیم که thread اصلی (main thread) برنامه، دچار اختلال شود، باید این عملیات را در یک thread جدید انجام بدهیم.

ابتدا در Activity مورد نظرمان، کدهای زیر را می نویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]public[/B] Handler mHandler[COLOR=#339933];[/COLOR]
[B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] continue_or_stop[COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
سپس در روش مورد نظرمان از Activity (مثلا در روش onCreate)، باید کدهای زیر را بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]mHandler [COLOR=#339933]=[/COLOR] [B]new[/B] Handler[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
continue_or_stop [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
[B]new[/B] [COLOR=#003399]Thread[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] [COLOR=#003399]Runnable[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
    @Override
    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] run[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
        [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
        [B]while[/B] [COLOR=#009900]([/COLOR]continue_or_stop[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
            [B]try[/B] [COLOR=#009900]{[/COLOR]
                [COLOR=#003399]Thread[/COLOR].[COLOR=#006633]sleep[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// every 5 seconds[/I][/COLOR]
                mHandler.[COLOR=#006633]post[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] [COLOR=#003399]Runnable[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

                    @Override
                    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] run[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                        [COLOR=#666666][I]// your codes [/I][/COLOR]
                        [COLOR=#666666][I]// you can set continue_or_stop to false, for stop[/I][/COLOR]
                    [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
            [COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]Exception[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [COLOR=#666666][I]// TODO: handle exception [/I][/COLOR]
            [COLOR=#009900]}[/COLOR]
        [COLOR=#009900]}[/COLOR]
    [COLOR=#009900]}[/COLOR]
[COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
به عنوان مثال، کدهای کامل در یک Activity ، می تواند مشابه کدهای زیر باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][B]package[/B] [COLOR=#006699]com.kelidestan.newclass[/COLOR][COLOR=#339933];[/COLOR]

[B]import[/B] [COLOR=#006699]android.app.Activity[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Bundle[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.os.Handler[/COLOR][COLOR=#339933];[/COLOR]
[B]import[/B] [COLOR=#006699]android.widget.Toast[/COLOR][COLOR=#339933];[/COLOR]

[B]public[/B] [B]class[/B] MainActivity [B]extends[/B] Activity [COLOR=#009900]{[/COLOR]
        
        [B]public[/B] Handler mHandler[COLOR=#339933];[/COLOR]
        [B]public[/B] [COLOR=#000066][B]boolean[/B][/COLOR] continue_or_stop[COLOR=#339933];[/COLOR]

        @Override
        [B]protected[/B] [COLOR=#000066][B]void[/B][/COLOR] onCreate[COLOR=#009900]([/COLOR]Bundle savedInstanceState[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                [B]super[/B].[COLOR=#006633]onCreate[/COLOR][COLOR=#009900]([/COLOR]savedInstanceState[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                setContentView[COLOR=#009900]([/COLOR]R.[COLOR=#006633]layout[/COLOR].[COLOR=#006633]activity_main[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
                mHandler [COLOR=#339933]=[/COLOR] [B]new[/B] Handler[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                continue_or_stop [COLOR=#339933]=[/COLOR] [COLOR=#000066][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
                [B]new[/B] [COLOR=#003399]Thread[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] [COLOR=#003399]Runnable[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                    @Override
                    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] run[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                        [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                        [B]while[/B] [COLOR=#009900]([/COLOR]continue_or_stop[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                            [B]try[/B] [COLOR=#009900]{[/COLOR]
                                [COLOR=#003399]Thread[/COLOR].[COLOR=#006633]sleep[/COLOR][COLOR=#009900]([/COLOR][COLOR=#CC66CC]5000[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR] [COLOR=#666666][I]// every 5 seconds[/I][/COLOR]
                                mHandler.[COLOR=#006633]post[/COLOR][COLOR=#009900]([/COLOR][B]new[/B] [COLOR=#003399]Runnable[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

                                    @Override
                                    [B]public[/B] [COLOR=#000066][B]void[/B][/COLOR] run[COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                        [COLOR=#666666][I]// TODO Auto-generated method stub[/I][/COLOR]
                                        [COLOR=#666666][I]// your codes [/I][/COLOR]
                                        [COLOR=#666666][I]// you can set continue_or_stop to false, for stop[/I][/COLOR]
                                    [COLOR=#009900]}[/COLOR]
                                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                            [COLOR=#009900]}[/COLOR] [B]catch[/B] [COLOR=#009900]([/COLOR][COLOR=#003399]Exception[/COLOR] e[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
                                [COLOR=#666666][I]// TODO: handle exception [/I][/COLOR]
                            [COLOR=#009900]}[/COLOR]
                        [COLOR=#009900]}[/COLOR]
                    [COLOR=#009900]}[/COLOR]
                [COLOR=#009900]}[/COLOR][COLOR=#009900])[/COLOR].[COLOR=#006633]start[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
                
        [COLOR=#009900]}[/COLOR]


[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
کدهای مورد نظرمان که قصد داریم هر 5 ثانیه یک بار، اجرا شوند را باید به جای عبارت // your codes بنویسیم. تکرار شدن اجرای کدها تا زمانی ادامه می یابد که متغیر continue_or_stop برابر true باشد (زیرا یک حلقه while بر اساس مقدار آن ساخته ایم)، بنابراین برای توقف تکرار اجرای کدها، باید مقدار متغیر continue_or_stop را به false تغییر بدهیم.

مدت زمان برای تکرار اجرای کدها، بر حسب میلی ثانیه تعیین شده است (عدد 5000 بیانگر 5 ثانیه می باشد و شما می توانید آن را به دلخواه تغییر بدهید).
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
به دست آوردن زمان فعلی، به صورت یک عدد تنها، با روش System.currentTimeMillis ، در برنامه نویسی اندروید

به دست آوردن زمان فعلی، به صورت یک عدد تنها، با روش System.currentTimeMillis ، در برنامه نویسی اندروید

با استفاده از روش System.currentTimeMillis ، می توانیم زمان فعلی را به صورت یک عدد تنها (بر حسب میلی ثانیه) به دست آوریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]long[/B][/COLOR] time_milliseconds [COLOR=#339933]=[/COLOR] [COLOR=#003399]System[/COLOR].[COLOR=#006633]currentTimeMillis[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
این عدد که توسط روش System.currentTimeMillis برگردانده می شود، برابر تعداد میلی ثانیه های (milliseconds) گذشته از تاریخ زیر می باشد :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]January [COLOR=#CC66CC]1[/COLOR] [COLOR=#CC66CC]1970[/COLOR] 00[COLOR=#339933]:[/COLOR]00[COLOR=#339933]:[/COLOR]00 GMT[/FONT]
[/FONT][/COLOR]
تاریخ فوق، مبدا یونیکس (Unix Epoch) نامیده می شود و به عددی هم که بر این اساس برای سنجش زمان به کار می رود، UniX timestamp می گوییم.چنانچه بخواهیم عددی بر اساس تعداد ثانیه های (seconds) گذشته را به دست آوریم، کد زیر را اجرا می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]long[/B][/COLOR] time_milliseconds [COLOR=#339933]=[/COLOR] [COLOR=#003399]System[/COLOR].[COLOR=#006633]currentTimeMillis[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000066][B]long[/B][/COLOR] time_seconds [COLOR=#339933]=[/COLOR] time_milliseconds [COLOR=#339933]/[/COLOR] 1000L[COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تبدیل عدد به دست آمده از روش System.currentTimeMillis برای زمان، به یک شکل مناسب برای نمایش تاریخ، با کلاس SimpleDateFormat

تبدیل عدد به دست آمده از روش System.currentTimeMillis برای زمان، به یک شکل مناسب برای نمایش تاریخ، با کلاس SimpleDateFormat

در مبحثی دیگر، روش System.currentTimeMillis را معرفی کردیم که برای به دست آوردن زمان فعلی، به صورت یک عدد تنها به کار می رود. اکنون قصد داریم که چگونگی استفاده از کلاس SimpleDateFormat برای تبدیل آن عدد به یک شکل مناسب برای نمایش تاریخ را شرح بدهیم.

ابتدا زمان فعلی را با کدهای زیر به دست می آوریم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]long[/B][/COLOR] time_milliseconds [COLOR=#339933]=[/COLOR] [COLOR=#003399]System[/COLOR].[COLOR=#006633]currentTimeMillis[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
اکنون با کامل کردن کدها، آن را به یک شکل دلخواه برای تاریخ، نمایش می دهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]long[/B][/COLOR] time_milliseconds [COLOR=#339933]=[/COLOR] [COLOR=#003399]System[/COLOR].[COLOR=#006633]currentTimeMillis[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]SimpleDateFormat[/COLOR] sdf [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]SimpleDateFormat[/COLOR][COLOR=#009900]([/COLOR][COLOR=#0000FF]"yyyy-MM-dd-HH-mm-ss"[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]Date[/COLOR] date [COLOR=#339933]=[/COLOR] [B]new[/B] [COLOR=#003399]Date[/COLOR][COLOR=#009900]([/COLOR]time_milliseconds[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#003399]String[/COLOR] date_sdf [COLOR=#339933]=[/COLOR] sdf.[COLOR=#006633]format[/COLOR][COLOR=#009900]([/COLOR]date[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
با تغییر عبارت زیر، می توانیم شکل نمایش تاریخ را تغییر بدهیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]yyyy[COLOR=#339933]-[/COLOR]MM[COLOR=#339933]-[/COLOR]dd[COLOR=#339933]-[/COLOR]HH[COLOR=#339933]-[/COLOR]mm[COLOR=#339933]-[/COLOR]ss[/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تبدیل یک تاریخ ساختاریافته (بر اساس سال و ماه و روز و ساعت و ...) به یک عدد تنها (بر اساس معیار Unix Epoch)

تبدیل یک تاریخ ساختاریافته (بر اساس سال و ماه و روز و ساعت و ...) به یک عدد تنها (بر اساس معیار Unix Epoch)

قبلا در مورد معیار Unix Epoch صحبت کردیم و گفتیم که چگونه می توان زمان فعلی را بر اساس معیار Unix Epoch ، به صورت یک عدد تنها به دست آورد، اما اکنون قصد داریم کدهایی را بنویسیم که سال و ماه و روز و ... را دریافت کند و یک عدد تنها (بر اساس معیار Unix Epoch) به ما بدهد (دیگر زمان فعلی را نمی خواهیم، بلکه یک زمان معین را می خواهیم).

برای این منظور، ابتدا تابع زیر را تعریف می کنیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]int[/B][/COLOR] componentTimeToTimestamp[COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR] year, [COLOR=#000066][B]int[/B][/COLOR] month, [COLOR=#000066][B]int[/B][/COLOR] day, [COLOR=#000066][B]int[/B][/COLOR] hour, [COLOR=#000066][B]int[/B][/COLOR] minute, [COLOR=#000066][B]int[/B][/COLOR] second[COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]

        [COLOR=#003399]Calendar[/COLOR] c [COLOR=#339933]=[/COLOR] [COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]getInstance[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]YEAR[/COLOR], year[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]MONTH[/COLOR], month[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]DAY_OF_MONTH[/COLOR], day[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]HOUR[/COLOR], hour[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]MINUTE[/COLOR], minute[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]SECOND[/COLOR], second[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
        c.[COLOR=#006633]set[/COLOR][COLOR=#009900]([/COLOR][COLOR=#003399]Calendar[/COLOR].[COLOR=#006633]MILLISECOND[/COLOR], [COLOR=#CC66CC]0[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]

        [B]return[/B] [COLOR=#009900]([/COLOR][COLOR=#000066][B]int[/B][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]([/COLOR]c.[COLOR=#006633]getTimeInMillis[/COLOR][COLOR=#009900]([/COLOR][COLOR=#009900])[/COLOR] [COLOR=#339933]/[/COLOR] 1000L[COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR][/FONT]
[/FONT][/COLOR]
سپس اعداد مربوط به تاریخ و زمان مورد نظرمان را به تابع می دهیم (به عنوان یک مثال) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#000066][B]int[/B][/COLOR] time [COLOR=#339933]=[/COLOR] componentTimeToTimestamp[COLOR=#009900]([/COLOR][COLOR=#CC66CC]2015[/COLOR], [COLOR=#CC66CC]1[/COLOR], [COLOR=#CC66CC]1[/COLOR], [COLOR=#CC66CC]1[/COLOR], [COLOR=#CC66CC]1[/COLOR], [COLOR=#CC66CC]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[/FONT][/COLOR]
دقت شود عددی که به دست می آید، بر حسب ثانیه است.
 
بالا