September 15, 2016

Date & Calendar

java.util.Date ဟာ အချိန်တွေကို ကိုယ်စားပြုဖို့ ရေးသားထားတဲ့ Java Class တစ်မျိုးဖြစ်ပါတယ်။ Java Date ဟာ Nano Seconds အထိ ဖော်ပြနိုင်ပါတယ်။ java.util.Date ဟာ Java ဘာသာရပ်စတင်ပေါ်ပေါက်စဉ်ကတဲက ပါဝင်တဲ့ API တစ်မျိုးဖြစ်ပြီး၊ သူ့စီမှာ ရက်၊ လ၊ နှစ်ရက် နာရီ မိနစ် အစရှိတဲ့ ယူနစ်တွေကို ပြောင်းပေးနိုင်တဲ့ Method တွေပါဝင်ပေမဲ့လဲ​ Thread Save မဖြစ်တာက တကြောင်း၊ Internationalization မဖြစ်တာကတစ်ကြောင်း အကြောင်း အမျိုးမျိုးကြောင့် လက်ရှိ အချိန်မှာ အသုံးမပြုသင့်တော့ တာကြောင့် တားမြစ်ထားပါတယ်။
ဒါကြောင့် Date Class ဟာ တန်ဖိုးကို သိမ်းဆည်းရှံသာ အသုံးပြုပြီး၊ တွက်ချက်မှု့တွေ၊ Interpret လုပ်တာတွေကိုတော့ Calendar Class မှ တဆင့် ပြုလုပ်ရန် စီစဉ်ထားပါတယ်။

API ကို မလေ့လာခင် ကျွန်တော်တို့ ရေးမည့် Program ထဲမှာ Date ကို ဘယ်လိုသုံးချင်တာလဲ ဆိုတာကို စပြီး လေ့လာကြည့်ကြရအောင်။
  • Date Object တွေကို တည်ဆောက်မယ်
  • တည်ဆောက်ထားတဲ့ Date Object ကနေ Year, Month, Date, Day, Hours, Minutes , Seconds အစရှိတဲ့ လိုအပ်တဲ့ တန်ဖိုးတွေကို ပြောင်ယူမယ်
  • Date တွေကို တွက်ချက်မယ်
  • Date တွေကို လိုအပ်တဲ့ပုံစံနဲ့ ပြောင်းပြမယ်
ဒါတွေကို လုပ်ကြရပါမယ်။


Creation of Date


Date Object ကို ဘယ်လို တည်ဆောက်မလဲ။ ဒါဟာ အရေးကြီးတဲ့ အချက်ဖြစ်ပါတယ်။ ကျွန်တော်တို့ Date Object ကို တည်ဆောက်တဲ့ နေရာမှာ Current Time နဲ့ ယူပြီး ဆောက်ချင်တာရှိသလို၊ အချိန် သတ်မှတ်ပြီး ဆောက်ချင်တဲ့အခါလဲ ရှိပါမယ်။

အရင်ဆုံး Current Time ကို သုံးပြီး ဆောက်တဲ့နည်းကို ကြည့်ပါမယ်။

အထက်ပါအတိုင်း Java Date Object ကို Current Time ကိုသုံးပြီး တည်ဆောက်လိုလျှင် နည်းလမ်းနှစ်မျိုးရှိပါသည်။

အလွယ်ဆုံးကတော့ java.utils.Date ရဲ့ Default Constructor ကို သုံးပြီး Instantiate လုပ်တဲ့နည်းပါပဲ။ လက်ရှိ Runtime ရဲ့ Current Time ကို သုံးပြီး Date Object ကို တည်ဆောက်ပေးပါလိမ့်မယ်။

ဒုတိယနည်းကတော့ Calendar Object ကို သုံးတဲ့ နည်းပါပဲ။ အထက်မှာ ဖေါ်ပြထားတဲ့ အတိုင်း Calendar Object ကို Calendar.getInstance() method နဲ့တည်ဆောက်ပါတယ်။ ပြီးရင် getTime() ကနေ Date Object ကို ရယူနိုင်ပါတယ်။ အဲ့ဒီလို ခေါ်လိုက်ရင် Current Time နဲ့ Date Object ကို ပြန်ရမှာ ဖြစ်ပါတယ်။

Constructors of Date Object


အထက်ဖေါ်ပြပါအတိုင်း java.util.Date မှာ JDK 1.1 ကတည်းက Constructor တွေ အတော်များများပါသော်လည်း၊ လက်ရှိမှာတော့ အတော်များများ Deprecated ဖြစ်သွားပြီး ၂ မျိုးသာ သုံးလို့ရပါတော့မယ်။ တစ်မျိုးကတော့ အထက်မှာ အသုံးပြုခဲ့တဲ့ Current Time ကိုရယူနိုင်တဲ့ Default Constructor ဖြစ်ပါတယ်။

နောက်တစ်မျိုးကတော့ long တန်ဖိုးတစ်ခုကို Parameter အဖြစ်ရယူတဲ့ Constructor ဖြစ်ပါတယ်။ အဲ့ဒီ long Parameter ဟာ standard base time (epoch) ကနေ ကွာဟမှူ့ကို milliseconds နဲ့ တွက်ယူထားတဲ့ တန်ဖိုး ဖြစ်ရပါမယ်။ GMT 1970-01-01 00း00း00 ကနေ တွက်ရမှာ ဖြစ်ပါတယ်။

ဒါ့ကြောင့် အချိန် သတ်မှတ်ပြီး Date Object ကို ဆောက်ချင်တယ်ဆိုရင်တော့ သုံးနိုင်ပါမယ်။ ဒါပေမဲ့ epoch ကနေ အချိန်ဘယ်လောက် ကွာလဲ ဆိုတာကို milliseconds နဲ့ တွက်ပြီးပြဖို့ဆိုတာ လွယ်တဲ့ ကိစ္စတော့ မဟုတ်ပါဘူး။

ဆက်ပြီး အချိန်သတ်မှတ်ပြီး Date Object တွေကို ဘယ်လို တွက်မလဲ ဆိုတာကို ကြည့်ရအောင်။

အချိန်သတ်မှတ်ပြီး Date Object ကို ဆောက်တဲ့နေရာမှာ အထက်ဖေါ်ပြပါအတိုင်း နည်း ၃ မျိုးနဲ့ ဆောက်လုပ်နိုင်မှာ ဖြစ်ပါတယ်။

ပထမဆုံးနည်းကတော့ Date Constructor မှာ epoch time ကို ပေးတဲ့ နည်းပါပဲ။ ဒါပေမဲ့ဗျာ Epoch Time ကို Milliseconds နဲ့ တွက်ထုတ်ရမယ်ဆိုတာက လက်တွေ့မဆန်ပါဘူး။

ဒုတိယနည်းကတော့ Calendar Object ကို သုံးတဲ့နည်းပါ။ Calendar Object ရဲ့ သက်ဆိုင်ရာ Fields တွေကို လိုသလို Update လုပ်ပြီးမှ Date Object ကို ရယူတဲ့နည်းပါ။ သူလဲပဲ Calendar ကို ဆောက်ပြီးတော့ တန်ဖိုးတွေကို ပြောင်းနေရတဲ့အတွက် Step တွေ များပါတယ်။ ပြီးတော့ လတန်ဖိုးဟာ 0 ကနေ စတာကို သတိထားဖို့လိုပါတယ်။ ၁ လပိုင်းဆိုရင် တန်ဖိုးက 0 ဖြစ်ပြီး ၂ လပိုင်းဆိုရင် တန်ဖိုးက 1 လို့ပေးရမှာ ဖြစ်ပါတယ်။

နောက်ဆုံးနည်းကတော့ DateFormat Object ကို သုံးပြီး parse လုပ်တဲ့နည်းပါ။ DateFromat Object ကို SimpleDateFormat Class ကနေ တည်ဆောက်ပါမယ်။ Constructor Arguments အနေနဲ့ yyyy-MM-dd ကို ပေးထားပြီး အဲ့ဒီ Format နဲ့ ရေးထားတဲ့ String Object ကနေ Date ကို ရယူနိုင်မှာ ဖြစ်ပါတယ်။

Format ချထားတဲ့ String ကို သုံးမှာ ဖြစ်တဲ့အတွက် နားလည်ရလွယ်ကူတဲ့အတွက် အသုံးများတဲ့ နည်းဖြစ်ပါတယ်။ တစ်ခုသတိထားရမှာက parse method ကို သုံးတဲ့နေရာမှာ format မမှန်တဲ့ String ကို ပေးမိရင် ParseException ကို ဖြစ်ပွားစေနိုင်တဲ့ အတွက် အဆိုပါ Exception ကို Handle လုပ်ပေးဖို့လို အပ်ပါတယ်။

DateFormat နဲ့ပတ်သက်ပြီး နောက်ပိုင်းမှာ ဆက်လက်ဖေါ်ပြသွားပါမယ်။


Interpretation of Calendar Values

Date Object မှာ Calendar Field ရဲ့ တန်ဖိုးများကို ရယူဖို့ Method တွေလဲ ရှိတော့ ရှိပါတယ်။ ဒါပေမဲ့ Internationalization နဲ့ မကိုက်တဲ့အတွက် အသုံးမပြုတော့ရန် Deprecate လုပ်ထားပါတယ်။ Calendar Object ကနေ တဆင့် Interpret လုပ်ယူရမှာ ဖြစ်ပါတယ်။

Calendar Class မှာ Calendar Fields တွေကို Get / Set လုပ်ဖို့အတွက် Method တွေကို ပြင်ထားပါတယ်။

Method Name
Return Type
Arguments
set
void
int field
int amount
get
int
int field

Calendar Object ရဲ့ သက်ဆိုင်ရာ Calendar Field တန်ဖိုးတွေကို ပြုပြင်နိုင်ဖို့အတွက် set method ကို အသုံးပြုရမှာ ဖြစ်ပါတယ်။ set method မှာ Parameter ၂ ခုကို ရယူနေပြီး ပထမ Parameter ဟာ Calendar Field ကို ကိုယ်စားပြုပြီး၊ ဒုတိယ Parameter ဟာ အဲ့ဒီ Field ရဲ့ တန်ဖိုးကို ကိုယ်စားပြုပါတယ်။

Calendar Class မှာ Calendar Field တွေကို ကိုယ်စားပြုနိုင်ဖို့ Static Variable များကို ပြင်ဆင်ထားပြီး အဲ့ဒီ Fields တွေကို အသုံးပြုနိုင်ပါတယ်။

တဖန် get method မှာလဲ int parameter တစ်ခုကို ရယူနေပြီး မိမိက ရယူလိုသော Calendar Field ကို ပေးရမှာ ဖြစ်ပါတယ်။ အဲ့ဒီနေရာမှာလဲ Calendar ရဲ့ Static Variable များကို အသုံးပြုနိုင်ပါတယ်။

အသုံးပြုနိုင်တဲ့ Static Variable တွေကတော့ အောက်ပါအတိုင်းဖြစ်ပါတယ်။

Static Variable
Definition
YEAR
နှစ်ကို ကိုယ်စားပြုပါတယ်
MONTH
ကို ကိုယ်စားပြုပါတယ်
DAY_OF_MONTH
လတစ်လရဲ့ ရက်ကို ကိုယ်စားပြုပါတယ်
DAY_OF_WEEK
အပါတ်ရဲ့ ရက်ကို ကိုယ်စားပြုပါတယ်
DAY_OF_WEEK_IN_MONTH
လရဲ့ အပါတ် အတွင်းမှာရှိတဲ့ ရက်ကို ကိုယ်စားပြုပါတယ်
DAY_OF_YEAR
နှစ်တစ်နှစ်အတွင်းမှာရှိတဲ့ ရက်ကို ကိုယ်စားပြုပါတယ်
WEEK_OF_YEAR
နှစ် တစ်နှစ်အတွင်းမှာရှိတဲ့ အပါတ်ကို ကိုယ်စားပြုပါတယ်
WEEK_OF_MONTH
လတစ်လအတွင်းမှာရှိတဲ့ အပါတ်ကို ကိုယ်စားပြုပါတယ်
HOUR_OF_DAY
နေ့တစ်နေ့ရဲ့ နာရီကို ကိုယ်စားပြုပါတယ်
HOUR
နာရီကို ကိုယ်စားပြုပါတယ်
MINUTE
မိနစ်ကို ကိုယ်စားပြုပါတယ်
SECOND
စက္ကန့်ကို ကိုယ်စားပြုပါတယ်
MILLISECOND
မီလီ စက္ကန့်ကို ကိုယ်စားပြုပါတယ်

Setting Calendar Fields



အထက်ပါ အတိုင်း သက်ဆိုင်ရာ Calendar Field များရဲ့ တန်ဖိုးကို တစ်ခုချင်းဆီသတ်မှတ်ပေးနိုင်ပါတယ်။ တဖန် အောက်ပါ အတိုင်း Calender Field အစုလိုက် တန်ဖိုးကို သတ်မှတ်ပေးနိုင်တဲ့ Method တွေလဲ ရှိပါတယ်။



Calendar Object ရဲ့ နှစ်၊ လ၊ ရက်တို့ကို သတ်မှတ်လိုပါက int parameter ၃ ခုပါတဲ့ Method ကို သုံးမယ်ဆိုလဲ​ရပါတယ်။ သတိပြုရမှာက လတန်ဖိုးဟာ သုညကနေ စတယ်ဆိုတာပါပဲ။ int တန်ဖိုးကို တိုက်ရိုက်မပေးပဲ Calendar Class ရဲ့ Month အတွက် ရေးသားထားတဲ့ Static Variable တွေကို သုံးမယ်ဆိုလဲ ရပါတယ်။ Calendar Class မှာ တစ်နှစ်တာ အတွက် လတွေကို Static Variable တွေ အနေနဲ့ ကြိုတင် ရေးသားပေးထားပါတယ်။

Getting Calendar Fields

Leniency of Calendar

Calendar Object ရဲ့ တန်ဖိုးတွေကို တွက်ချက်ရာတွင် Leniency Mode ကို ကြည့်ပြီးတွက်ချက်လေ့ရှိပါတယ်။ Calendar Object ရဲ့ isLenient method နဲ့ Calendar Class ရဲ့ Leniency Mode ကို သိရှိနိုင်ပြီး setLenient method ဖြင့်လဲ Leniency Mode ကို သတ်မှတ်ပေးနိုင်ပါတယ်။

Calendar Object တစ်ခုရဲ့ Default Leniency တန်ဖိုးဟာ true ဖြစ်ပါတယ်။

Leniency တန်ဖိုးဟာ true ဖြစ်နေရင် Calendar Field ရဲ့တန်ဖိုးက သတ်မှတ်ထားတဲ့ တန်ဖိုးထက်ကျော်လွန်သွားပါက လက်ရှိတန်ဖိုးထက်ကြီးတဲ့ Field တွေကို ပါဆက်ပြီး ပြောင်းလဲပေးမှာ ဖြစ်ပါတယ်။

ဆိုလိုတာက လက်ရှိ Calendar ရဲ့တန်ဖိုးက 2016/09/15 ဖြစ်တယ်ဆိုပါစို့။ c.set(Calendar.DAY_OF_MONT, 45) လို့ရေးလိုက်ရင် တန်ဖိုးဟာ 2016/10/30 လို့ပြောင်းသွားပါမယ်။

  အထက်ပါ Program ကို Run ကြည့်မယ်ဆိုရင် အောက်ပါ အတိုင်းတွေ့ရပါလိမ့်မယ်။


Calendar Object c ရဲ့ lenient တန်ဖိုးဟာ သတ်မှတ်ထားခြင်းမရှိတဲ့ အတွက် Default အတိုင်း true ဖြစ်နေတာကို တွေ့ရပါတယ်။ အဲဒီအတွက် DAY_OF_MONTH ကို တစ်လရှိတာထက် ပိုပြီး 45 လို့ သတ်မှတ်လိုက်တဲ့အခါ လက်ရှိလကို ကျော်ပြီး ၁၀ လပိုင်း ၁၅ ရက်လို့ သတ်မှတ်ပေးသွားတာ ဖြစ်ပါတယ်။

ကျွန်တော်တို့ Leniency ကို False ဆိုပြီး ပြောင်းကြည့်မယ်ဆိုရင် Calendar Object ရဲ့ Leniency တန်ဖိုးဟာ Non-Lenient Mode ကို ပြောင်းသွားပါမယ်။ ဘယ်လို ဖြစ်မယ်ဆိုတာကို လက်တွေ့ ရေးကြည့်ကြရအောင်။


အထက်ပါအတိုင်း c.setLenient(false) ဆိုပြီး ပြောင်းလိုက်ပါတယ်။ Lenient Mode ဟာ Non-Lenient Mode ကို ပြောင်းသွားပါမယ်။ ဒီလိုဆိုရင် DAY_OF_MONTH Field မှာ 45 လို့ သတ်မှတ်လို့ ရမှာ မဟုတ်တော့ပါဘူး။ ၂၀၁၆ ခု ၁၀ ပိုင်းမှာ ရက် ၃၀ သာရှိတဲ့ အတွက် IllegalArgumentException ကို ဖြစ်ပေါ်စေမှာ ဖြစ်ပါတယ်။

Leniency ရဲ့သဘောတရားဟာ Calendar Field တွေကို Set လုပ်ရာမှာသာမက ရက်စွဲ အချိန်တွေကို တွက်ချက်တဲ့နေရာမှာလဲ​ အသုံးပြုပါတယ်။ ဆက်လက်ပြီး အချိန်တွေကို ဘယ်လို တွက်ချက်တယ်ဆိုတာကို ကြည့်ကြည့်ရအောင်။



Calculating Date & Time


အချိန်တွေကို အသုံးပြုရာမှာ သူ့ရဲ့တန်ဖိုးတွေကို တွက်ချက်ဖို့လဲ လိုပါမယ်။ Calendar Field တွေကို ပေါင်းဖို့အတွက် Method နှစ်ခုရှိပါတယ်။

Method
Arguments
Description
add
int field
int amount
အချိန်ရက်နှစ်လတို့အား အပေါင်းအနှုတ် ပြုလုပ်လိုပါက အသုံးပြုနိုင်
roll
int field
int amount
လက်ရှိ Field ထက်ကြီးသော Field အား မပြောင်းလည်းစေပဲ အပေါင်းအနှုတ် ပြုလုပ် 


 အထက်ပါ နမူနာထဲမှာ Calendar Object c1 ရဲ့ တန်ဖိုးကို 2016/09/15 လို့သတ်မှတ်ပါတယ်။ ပြီးရင် ရက် ၃၀ ကို add method ကို သုံးပြီး ပေါင်းစေပါတယ်။ Add Method ကို သုံးပြီးပေါင်းတာ ဖြစ်တဲ့အတွက် ရက်ကို ပေါင်းပြီး လကို ပါ ဆက်ပြီးတိုးပေးနိုင်မှာ ဖြစ်ပါတယ်။ အဲ့ဒီ အတွက် ရလဒ်ဟာ 2016/10/15 ဖြစ်သွားပါမယ်။

တဖန် roll ကို သုံးပြီး ပေါင်းရင်တော့ လက်ရှိ Field ရဲ့ တန်ဖိုးအပြင်ကို ပြောင်းလဲ ပေးမှာ မဟုတ်ပါဘူး။ အဲ့ဒီ အတွက် ရလဒ်ဟာ 2016/09/15 ပဲ ဖြစ်နေမှာ ဖြစ်ပါတယ်။ Run ကြည့်ထားတဲ့ ရလဒ်ကတော့ အောက်ပါ အတိုင်းဖြစ်ပါတယ်။



Formatting & Parsing Date

Date Object ကို View မှာ ပြန်ပြီး ပြသလိုတဲ့အခါမှာ User က နားလည်လွယ်တဲ့ ပုံစံနဲ့ ပြန်ပြီး ပြဖို့လိုအပ်ပါတယ်။ တဖန် Localization အရ မည်သို့ဖေါ်ပြရမယ်ဆိုတဲ့ သတ်မှတ်ချက်တွေလဲရှိတတ်ပါတယ်။ User Input ကတော့ String တွေဖြစ်နေရင်လဲ String ကနေ Date Object ကို ပြောင်းဖို့လိုအပ်ပါမယ်။ အဲ့လိုနေရာမျိုးမှာ Date တွေကို ဘယ်လို Format နဲ့ပြမယ်ဆိုတာကို ရေးသားတတ်ဖို့လိုအပ်ပါတယ်။

Date Object အား String အဖြစ် Format လုပ်လိုသည့်အခါတွင်၎င်း၊ Format ချထားသော String မှတဆင့် Date Object အား Parse လုပ်လိုသည့်အခါတွင်၎င်း အသုံးပြုနိုင်ပါတယ်။ DateFormat သည် Abstract Class ဖြစ်ပြီး၊ Concrete Class မှာ SimpleDateFormat Class ဖြစ်ပါတယ်။

Date တွေကို Format လုပ်လိုသည့် အခါ format(date date) Method ကို အသုံးပြုနိုင်ပြီး သတ်မှတ်ထားတဲ့ Format နဲ့ Format လုပ်ထားတဲ့ String Object ကို ပြန်ရမှာ ဖြစ်ပါတယ်။ Format အတိုင်းရေးထားတဲ့ String Object ကနေ Date Object ကို Parse လုပ်လိုတဲ့ အခါ parse(String source) method ကို အသုံးပြုနိုင်ပါတယ်။ String တန်ဖိုးနဲ့ တည်ဆောက်ထားတဲ့ Date Object ကို ရရှိမှာ ဖြစ်ပါတယ်။ parse method ကို အသုံးပြုတဲ့ အခါမှာ ParseException ကို ဖြစ်ပေါ်စေနိုင်တဲ့အတွက် Handle လုပ်ပေးဖို့ လိုအပ်ပါတယ်။

Date & Time Patterns

Letter 
Date or Time Component 
Presentation 
Examples 
G 
Era designator 
Text 
AD 
y 
Year 
Year 
1996; 96 
Y 
Week year 
Year 
2009; 09 
M 
Month in year 
Month 
July; Jul; 07 
w 
Week in year 
Number 
27 
W 
Week in month 
Number 
2 
D 
Day in year 
Number 
189 
d 
Day in month 
Number 
10 
F 
Day of week in month 
Number 
2 
E 
Day name in week 
Text 
Tuesday; Tue 
u 
Day number of week (1 = Monday, ..., 7 = Sunday) 
Number 
1 
a 
Am/pm marker 
Text 
PM 
H 
Hour in day (0-23) 
Number 
0 
k 
Hour in day (1-24) 
Number 
24 
K 
Hour in am/pm (0-11) 
Number 
0 
h 
Hour in am/pm (1-12) 
Number 
12 
m 
Minute in hour 
Number 
30 
s 
Second in minute 
Number 
55 
S 
Millisecond 
Number 
978 
z 
Time zone 
General time zone 
Pacific Standard Time; PST; GMT-08:00 
Z 
Time zone 
RFC 822 time zone 
-0800 
X 
Time zone 
ISO 8601 time zone 
-08; -0800; -08:00 


Samples

Date and Time Pattern 
Result 
"yyyy.MM.dd G 'at' HH:mm:ss z" 
2001.07.04 AD at 12:08:56 PDT 
"EEE, MMM d, ''yy" 
Wed, Jul 4, '01 
"h:mm a" 
12:08 PM 
"hh 'o''clock' a, zzzz" 
12 o'clock PM, Pacific Daylight Time 
"K:mm a, z" 
0:08 PM, PDT 
"yyyyy.MMMMM.dd GGG hh:mm aaa" 
02001.July.04 AD 12:08 PM 
"EEE, d MMM yyyy HH:mm:ss Z" 
Wed, 4 Jul 2001 12:08:56 -0700 
"yyMMddHHmmssZ" 
010704120856-0700 
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
2001-07-04T12:08:56.235-0700 
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX" 
2001-07-04T12:08:56.235-07:00 
"YYYY-'W'ww-u" 
2001-W27-3 

Date Object ကို Format ချထားတဲ့ String အဖြစ်ပြောင်းလိုရင် သတ်မှတ်လိုတဲ့ Format နဲ့ DateFormat ကို အရင်ဆောက်ရပါမယ်။ ပြီးပါမှ Format လုပ်လိုတဲ့ Date Object ကို သုံးပြီး format ပြောင်းရုံဖြစ်ပါမယ်။

 တဖန် Format လုပ်ထားတဲ့ String ကနေ Date Object ကို ပြန်လိုချင်ရင် parse method ကို အသုံးပြုနိုင်ပါတယ်။

အမှန်အတိုင်းပြောရမယ်ဆိုရင် Date တစ်ခုနဲ့ တစ်ခုဘယ်လိုကွာတယ်ဆိုတာ ကို တွက်ချက်တတ်ဖို့လဲ​လိုပါလိမ့်မယ်။ လက်ရှိ Date နဲ့ Calendar မှာ အဲ့တာတွေကို တွက်ချက်ဖို့ Method တွေ အသင့်ပေးမထားတာဘူး။ အဲ့ဒီအတွက် Date Object တွေရဲ့ Time ကို Millisecond နဲ့ ပြောင်းယူပြီး ကွာခြားချက်ကို ရှာ၊ ပြီးရင် နာရီ၊ ရက်တွေကို ပြန်ပြီးတွက်ထုတ်ရမှာ ဖြစ်ပါတယ်။

Java SE 8 မတိုင်မှီကတော့ Third Party API တွေဖြစ်တဲ့ Joda Time API တို့ကို အသုံးပြုခဲ့ကြရပါတယ်။
Java SE 8 ရောက်တဲ့ အခါမှာတော့ Date & Time API အသစ်ကို ဖြည့်စွက်လာခဲ့ပြီး Duration တွေကို တွက်ချက်နိုင်လာခဲ့ပါတယ်။

Date & Time API နဲ့ ပါတ်သက်ပြီး နောက်အခန်းများတွင် ဖေါ်ပြပါမယ်။

ဆက်ပါဦးမယ်။
မင်းလွင်

1 comment: