အချိန်အခြေအနေမှီခိုစစ်ဆင်ရေးများအတွက် PHP ကိုအသုံးပြုသောအခါ datetimezone အရာဝတ်ထု၏အချိန်ဇုန်အမည်ရရှိရန် timezone_name_get () function ကိုအသုံးပြုနိုင်သည်။ သို့သော်အချို့ဖြစ်ရပ်များတွင်ဤလုပ်ဆောင်မှုသည် မှားယွင်းသော ပြန်လာပြီးပရိုဂရမ်ကိုအချိန်ဇယားအချက်အလက်မှန်ကန်စွာလုပ်ဆောင်ရန်ပျက်ကွက်နိုင်သည်။ ဤဆောင်းပါးသည် timezone_name_get သည် မှားယွင်းသော အားဖြည့်စွက်ခြင်းနှင့်မှန်ကန်မှုကိုသေချာစေရန်ဤအခြေအနေကိုထိရောက်စွာကိုင်တွယ်ရန်ဤအခြေအနေကိုထိရောက်စွာကိုင်တွယ်ရန်အသုံးပြုသောအခြားနည်းလမ်းများတီထွင်ဖန်တီးသူများအားလေ့လာနိုင်သည်။
ပထမအချက်မှာများသောအားဖြင့် 0 င်ရောက်နေသော datetimezone အ ရာဝတ်ထုသည်ခိုင်လုံသော TimeZone အမည်ရှိသောကြောင့် သို့မဟုတ် အရာဝတ်ထုကိုမှန်ကန်စွာ အစပြု. မရပါ။ ဥပမာအားဖြင့်, အမှားတစ်ခုသို့မဟုတ်မတည်ရှိသည့်အချိန်ဇုန်အမှတ်အသားကိုအသုံးပြုသည်။ သို့မဟုတ် Datetimezone Office ဥပမာအားဖြင့်မတော်တဆပျက်စီးသွားသည်။
<?php
$timezone = new DateTimeZone('Invalid/Timezone');
echo timezone_name_get($timezone); // ပြန်လာရန်ဖြစ်နိုင်သည် false
?>
PHP 8.1 မှစတင်. Datetimezone အတန်းအစားသည်အချိန်ဇုန်အမည်ကိုတိုက်ရိုက်ရရှိနိုင်သည့် GetName () နည်းလမ်းကိုထည့်သွင်းထားပြီး TimeZone_Name_get () ထက်ပိုမိုသောအရာဝတ်ထုကိုပိုမိုနားလည်နိုင်သည်။ သင်ပထမ ဦး ဆုံးပြန်လာသောတန်ဖိုးသည်မှန်ကန်မှုရှိမရှိစစ်ဆေးပြီးဤနည်းလမ်းကိုသုံးနိုင်သည်။
<?php
$timezone = new DateTimeZone('Asia/Shanghai');
$name = $timezone->getName();
if ($name === false || $name === null) {
// မမှန်ကန်သောအခြေအနေများကိုကိုင်တွယ်ပါ
$name = 'UTC'; // အခြားရွေးချယ်စရာပုံမှန်အချိန်ဇုန်
}
echo $name;
?>
Datetimezone အရာဝတ်ထုကိုချက်ချင်းစစ်ဆေးသည့်အခါအမှားများကိုပြန်ပို့ရန်နောက်ဆက်တွဲလုပ်ဆောင်မှုများကိုဖြစ်ပေါ်စေသည့်မမှန်ကန်တဲ့အချိန်ဇုန်များကိုရှောင်ရှားရန်ချွင်းချက်ဖမ်းယူနိုင်သည့်ယန္တရားကိုသုံးနိုင်သည်။
<?php
try {
$timezone = new DateTimeZone('Invalid/Timezone');
} catch (Exception $e) {
// ပုံမှန်အချိန်ဇုန်အစားထိုးအသုံးပြုပါ
$timezone = new DateTimeZone('UTC');
}
echo timezone_name_get($timezone);
?>
ဤနည်းလမ်းသည် timezone_name_get () ကိုနောက်ပိုင်းတွင်ဟုခေါ်သောအခါခိုင်လုံသောအချိန်ဇုန်အမည်ရရှိနိုင်ပါသည်။
အချိန်ဇုန်အမည်ကို Datetimezone မှတိုက်ရိုက်မရရှိနိုင်ပါက Datetime Office ၏ formatatting function ကို အသုံးပြု. အခြားအချိန်ဇုန်အတိုကောက်သို့မဟုတ် offset ကိုအခြားရွေးချယ်စရာသတင်းအချက်အလက်အဖြစ်ရယူနိုင်သည်။
<?php
$timezone = new DateTimeZone('Invalid/Timezone');
try {
$datetime = new DateTime('now', $timezone);
} catch (Exception $e) {
$datetime = new DateTime('now', new DateTimeZone('UTC'));
}
// အချိန်ဇုန်အတိုကောက်ကိုရယူပါ,ဥပမာအားဖြင့် CST、PST
echo $datetime->format('T');
// သို့မဟုတ်အချိန်ဇုန် offset ရ,ဥပမာအားဖြင့် +0800
echo $datetime->format('O');
?>
အကယ်. အချိန်အတန်ကြာဇုန်သင်္ကေတများသည်ပရိုဂရမ်တွင်မသေချာမရေရာသည့်ဇုန်ကြိုးများပါ 0 င်ပါကအချိန်ဇုန်မြေပုံရေးဆွဲစားပွဲကိုကြိုတင်သတ်မှတ်ထားရန်, TimeZone_Name_get ကို ခေါ်သည့်အခါ၎င်းသည် မှားယွင်းစွာ ရှောင်တတ်သည်။
<?php
$validTimezones = timezone_identifiers_list();
$inputTimezone = 'Invalid/Timezone';
if (!in_array($inputTimezone, $validTimezones)) {
$inputTimezone = 'UTC'; // ပုံမှန်အချိန်ဇုန်ကိုသတ်မှတ်ပါ
}
$timezone = new DateTimeZone($inputTimezone);
echo timezone_name_get($timezone);
?>
timezone_name_get () ပြန်လာသည့်အခါ မှားယွင်းသောပြ problem နာမှာအခြေခံကျသောပြ problem နာမှာ Timezone Office သည်မမှန်ကန်ပါသို့မဟုတ် TimeZone အမည်မမှန်ကန်ပါ။ ဤပြ problem နာကို Object-Oriented နည်းလမ်းသစ်များအသုံးပြုခြင်း, Datetime ဖြင့်ထုတ်လုပ်မှုကိုပြုလုပ်ရန်နှင့်အချိန်ဇုန်စာရင်းများထိန်းသိမ်းခြင်းအားဖြင့်ဤပြ problem နာကိုထိရောက်စွာရှောင်ရှားနိုင်သည်။ တိကျသောအခြေအနေများအပေါ် အခြေခံ. အကျိုးသင့်အကြောင်းသင့်ရှိသောအခြားရွေးချယ်စရာများရွေးချယ်ခြင်းသည်အစီအစဉ်နှင့်အသုံးပြုသူအတွေ့အကြုံကိုအားကောင်းစေသည်။