PHP မွာ အခ်ိန္ကုိ ေဖာ္ျပဖို႔အတြက္ time() function ေလးနဲ႕လြယ္လြယ္ေလးေဖာ္ျပလို႔ရပါတယ္ ။
ဒါေပမယ့္ PHP ရဲ႕ time function ဟာ unix စနစ္ကေနဆင့္ပြားရယူထားတာျဖစ္ပါတယ္။ ဒီေတာ့ Unix ရဲ႕
timestamp စနစ္ကုိအရင္ေလ့လာၾကည့္ရေအာင္ သူက အခ်ိန္ကုိ စကၠန္႔နဲ႕တြက္ပါတယ္။
zero က January 1,1970 ျဖစ္ပါတယ္။ထူးျခားတာကသူက အသံုးျပဳထားတဲ့ Machine ရဲ႕ Systemအေပၚမူတည္ၿပီး
ေတာ့လည္းအေျပာင္းအလဲရွိပါတယ္။ 32 bit System မွာဆို December 1902 to January 2037 အထိတြက္ယူ
ႏိုင္ၿပီး 64 bit system မွာေတာ့ Billion of years ေတြကုိကုိင္တြယ္ေဆာင္ရြက္ႏိုင္မွာျဖစ္ပါတယ္။ဒါေပမယ့္
ဒါက Unix ရဲ႕ သမိုင္းေၾကာင္းျဖစ္ၿပီး PHP မွာေတာ့ January 1,1970 ကုိပဲ zero အျဖစ္သတ္မွတ္ထားပါတယ္။
အိုေခ စရေအာင္ ။ editor ကုိဖြင့္ ဒါေလးရိုက္ထည့္
<?php
echo time() ;// Output>1392728794
?>
server ထဲသြားသိမ္း Browser ကေနေခၚလိုက္ ။သန္းေထာင္နဲ႕ခ်ီတဲ့နံပါတ္ေတြကုိေတြ႕ရပါလိမ့္မယ္။ အဲ့ဒါက
system က zero စကၠန္႔အျဖစ္စသတ္မွတ္တဲ့01/01/1970ကေန အခုထိ အခ်ိန္ကုိ စကၠန္႔နဲ႕ျပေနတာပါ။ refresh
လုပ္ၾကည့္ရင္ စကၠန္႔ ေျပာင္းလဲတိုင္း ေနာက္ဆံုး နံပါတ္ေျပာင္းေျပာင္းသြားတာေတြ႕ရပါလိမ့္မယ္။01/01/1970
အခ်ိန္ကုိ zero အျဖစ္သတ္မွတ္တာေၾကာင့္မို႔အဲဒီထက္ေစာတဲ့ အခ်ိန္ကိုေတာ့ ဒီ function က ကုိင္တြယ္ေျဖရွင္းႏိုင္စြမ္း
မရွိပါဘူး။
ေနာက္ထပ္ စိတ္၀င္စားဖို႔ေကာင္းတာတစ္ခုက make time ဖန္ရွင္ mktime(နာရီ,မိနစ္,စကၠန္႔,လ,ရက္,ႏွစ္)ပါ။
သူကေတာ့timestampကေန ကုိယ္ေရာက္ေစခ်င္တဲ့အခ်ိန္ထိကုိသတ္မွတ္ႏိုင္ပါတယ္ ။ Parameter ကုိျပထားတဲ့အတိုင္း
ေနရာမလြဲေစပဲအစီအစဥ္တက်ထားေပးရပါတယ္။
echo mktime(2,30,45,1,1,2014)."<br/>";// output> 1388543445
Outputမွာ နံပါတ္ေတြကုိေတြ႕ရပါလိမ့္ဦးမယ္ ။သူကေတာ့ refresh လုပ္လည္းမေျပာင္းလဲပါဘူး။လက္ရွိအခ်ိန္ကုိေဖာ္ျပေနတာ
မဟုတ္တဲ့အတြက္ပါ။အခ်ိန္အေပၚမွာတြက္ခ်က္မွဳေတြလုပ္မယ္ဆိုရင္ ဒီ function ေတြနဲ႕တြက္ရတာမို႔ မွတ္ထားရမယ့္
function ေတြျဖစ္ပါတယ္။ေအာက္ကဥပမာေလးကုိေလ့လာၾကည့္ပါ။
<?php
$now= time();
$birthday=strtotime('1990-1-1');
$age=$now - $birthday;
$age_year=floor($age/(60*60*24*30*12));//ခုႏွစ္ကုိပဲယူခ်င္လို႔
echo $age_year;
?>
ပံုမွန္ေဖာ္ျပတဲ့ အခ်ိန္ကုိ timestramp အျဖစ္ေျပာင္း ခ်င္ရင္ strtotime() function ကုိသံုးရပါတယ္။
အသံုးမ်ားလို႔မမွတ္ထားခ်င္လည္းမွတ္ထားရမယ့္ function တစ္ခုျဖစ္ပါတယ္။
floor() function က ဒသမကိန္းေတြျဖစ္ေနရင္ ကိန္းျပည့္ယူဖို႔ေဆာင္ရြက္ေပးပါတယ္။
တြက္ခ်က္မွဳအတြက္ မို႔ စကၠန္႔ ေတြနဲ႕အလုပ္လုပ္သြားတာျဖစ္ေပမယ့္ တကယ္တမ္း
ကၽြန္ေတာ္တို႔ေတြ႕ေနျမင္ေနက် ရက္လႏွစ္နာရီမိနစ္စကၠန္႔ ပံုစံမ်ိဳးလိုခ်င္ရင္ေတာ့ date() function ကဖန္တီးေပး
ႏိုင္ပါတယ္။ေအာက္ကကုတ္ကုိေလ့လာၾကည့္ပါ
echo date("d/m/Y")."<br/>" ;// output>18/02/2014
echo date("h:i:s")."<br/>" ;// output>01:43:02
ျပထားတဲ့အတိုင္း အခ်ိန္အတြက္ day 'd',month 'm',year 'y',hour 'h',minute 'i',second 's' စသည္ျဖင့္ Parameter
ထည့္ေပးရပါတယ္ ။ ဒီေနရာမွာ D M Y စတဲ့ အကၡရာအႀကီးကုိသံုးရင္ 'Sun,Mon' 'January,February' စသည္ျဖင့္
အရွည္ေကာက္ျပေပး မွာျဖစ္ပါတယ္။
ရက္-လ-ႏွစ္ , လ/ရက္/ႏွစ္ အဆင္ေျပသလိုေနရာခ်သတ္မွတ္ေပးလို႔ရပါတယ္။ ေတာ္ေတာ္ေလးေတာ့သေဘာေပါက္သြားၿပီထင္တယ္။
ကဲ .... ေနာက္ေဆြးေႏြးခ်က္မွကၽြန္ေတာ္တို႔ ထပ္ေတြ႕ရေအာင္ ။ ေက်းဇူး ။
ဒါေပမယ့္ PHP ရဲ႕ time function ဟာ unix စနစ္ကေနဆင့္ပြားရယူထားတာျဖစ္ပါတယ္။ ဒီေတာ့ Unix ရဲ႕
timestamp စနစ္ကုိအရင္ေလ့လာၾကည့္ရေအာင္ သူက အခ်ိန္ကုိ စကၠန္႔နဲ႕တြက္ပါတယ္။
zero က January 1,1970 ျဖစ္ပါတယ္။ထူးျခားတာကသူက အသံုးျပဳထားတဲ့ Machine ရဲ႕ Systemအေပၚမူတည္ၿပီး
ေတာ့လည္းအေျပာင္းအလဲရွိပါတယ္။ 32 bit System မွာဆို December 1902 to January 2037 အထိတြက္ယူ
ႏိုင္ၿပီး 64 bit system မွာေတာ့ Billion of years ေတြကုိကုိင္တြယ္ေဆာင္ရြက္ႏိုင္မွာျဖစ္ပါတယ္။ဒါေပမယ့္
ဒါက Unix ရဲ႕ သမိုင္းေၾကာင္းျဖစ္ၿပီး PHP မွာေတာ့ January 1,1970 ကုိပဲ zero အျဖစ္သတ္မွတ္ထားပါတယ္။
အိုေခ စရေအာင္ ။ editor ကုိဖြင့္ ဒါေလးရိုက္ထည့္
<?php
echo time() ;// Output>1392728794
?>
server ထဲသြားသိမ္း Browser ကေနေခၚလိုက္ ။သန္းေထာင္နဲ႕ခ်ီတဲ့နံပါတ္ေတြကုိေတြ႕ရပါလိမ့္မယ္။ အဲ့ဒါက
system က zero စကၠန္႔အျဖစ္စသတ္မွတ္တဲ့01/01/1970ကေန အခုထိ အခ်ိန္ကုိ စကၠန္႔နဲ႕ျပေနတာပါ။ refresh
လုပ္ၾကည့္ရင္ စကၠန္႔ ေျပာင္းလဲတိုင္း ေနာက္ဆံုး နံပါတ္ေျပာင္းေျပာင္းသြားတာေတြ႕ရပါလိမ့္မယ္။01/01/1970
အခ်ိန္ကုိ zero အျဖစ္သတ္မွတ္တာေၾကာင့္မို႔အဲဒီထက္ေစာတဲ့ အခ်ိန္ကိုေတာ့ ဒီ function က ကုိင္တြယ္ေျဖရွင္းႏိုင္စြမ္း
မရွိပါဘူး။
ေနာက္ထပ္ စိတ္၀င္စားဖို႔ေကာင္းတာတစ္ခုက make time ဖန္ရွင္ mktime(နာရီ,မိနစ္,စကၠန္႔,လ,ရက္,ႏွစ္)ပါ။
သူကေတာ့timestampကေန ကုိယ္ေရာက္ေစခ်င္တဲ့အခ်ိန္ထိကုိသတ္မွတ္ႏိုင္ပါတယ္ ။ Parameter ကုိျပထားတဲ့အတိုင္း
ေနရာမလြဲေစပဲအစီအစဥ္တက်ထားေပးရပါတယ္။
echo mktime(2,30,45,1,1,2014)."<br/>";// output> 1388543445
Outputမွာ နံပါတ္ေတြကုိေတြ႕ရပါလိမ့္ဦးမယ္ ။သူကေတာ့ refresh လုပ္လည္းမေျပာင္းလဲပါဘူး။လက္ရွိအခ်ိန္ကုိေဖာ္ျပေနတာ
မဟုတ္တဲ့အတြက္ပါ။အခ်ိန္အေပၚမွာတြက္ခ်က္မွဳေတြလုပ္မယ္ဆိုရင္ ဒီ function ေတြနဲ႕တြက္ရတာမို႔ မွတ္ထားရမယ့္
function ေတြျဖစ္ပါတယ္။ေအာက္ကဥပမာေလးကုိေလ့လာၾကည့္ပါ။
<?php
$now= time();
$birthday=strtotime('1990-1-1');
$age=$now - $birthday;
$age_year=floor($age/(60*60*24*30*12));//ခုႏွစ္ကုိပဲယူခ်င္လို႔
echo $age_year;
?>
ပံုမွန္ေဖာ္ျပတဲ့ အခ်ိန္ကုိ timestramp အျဖစ္ေျပာင္း ခ်င္ရင္ strtotime() function ကုိသံုးရပါတယ္။
အသံုးမ်ားလို႔မမွတ္ထားခ်င္လည္းမွတ္ထားရမယ့္ function တစ္ခုျဖစ္ပါတယ္။
floor() function က ဒသမကိန္းေတြျဖစ္ေနရင္ ကိန္းျပည့္ယူဖို႔ေဆာင္ရြက္ေပးပါတယ္။
တြက္ခ်က္မွဳအတြက္ မို႔ စကၠန္႔ ေတြနဲ႕အလုပ္လုပ္သြားတာျဖစ္ေပမယ့္ တကယ္တမ္း
ကၽြန္ေတာ္တို႔ေတြ႕ေနျမင္ေနက် ရက္လႏွစ္နာရီမိနစ္စကၠန္႔ ပံုစံမ်ိဳးလိုခ်င္ရင္ေတာ့ date() function ကဖန္တီးေပး
ႏိုင္ပါတယ္။ေအာက္ကကုတ္ကုိေလ့လာၾကည့္ပါ
echo date("d/m/Y")."<br/>" ;// output>18/02/2014
echo date("h:i:s")."<br/>" ;// output>01:43:02
ျပထားတဲ့အတိုင္း အခ်ိန္အတြက္ day 'd',month 'm',year 'y',hour 'h',minute 'i',second 's' စသည္ျဖင့္ Parameter
ထည့္ေပးရပါတယ္ ။ ဒီေနရာမွာ D M Y စတဲ့ အကၡရာအႀကီးကုိသံုးရင္ 'Sun,Mon' 'January,February' စသည္ျဖင့္
အရွည္ေကာက္ျပေပး မွာျဖစ္ပါတယ္။
ရက္-လ-ႏွစ္ , လ/ရက္/ႏွစ္ အဆင္ေျပသလိုေနရာခ်သတ္မွတ္ေပးလို႔ရပါတယ္။ ေတာ္ေတာ္ေလးေတာ့သေဘာေပါက္သြားၿပီထင္တယ္။
ကဲ .... ေနာက္ေဆြးေႏြးခ်က္မွကၽြန္ေတာ္တို႔ ထပ္ေတြ႕ရေအာင္ ။ ေက်းဇူး ။
No comments:
Post a Comment