Python ၏ စံပြစာကြည့်တိုက် datetime ကိုအသုံးပြုခြင်းဖြင့် သင်သည် datetime object တစ်ခုကို date string တစ်ခုမှ ဖန်တီးနိုင်ပြီး string တစ်ခုအနေဖြင့် ၎င်းမှ ရက်သတ္တပတ်၏ နေ့ သို့မဟုတ် လ၏ အမည်ကို ရယူနိုင်ပါသည်။ သို့သော်၊ ထိုစာကြောင်းများ၏ ဘာသာစကားသည် ပတ်ဝန်းကျင်၏ ဒေသ (နိုင်ငံ သို့မဟုတ် ဒေသသတ်မှတ်မှု) ပေါ်တွင် မူတည်သည်။
ဤသည်မှာ မည်သည့်ဘာသာစကားဖြင့်မဆို စာကြောင်းတစ်ခုအဖြစ် ရက်စွဲတစ်ခုမှ ရက်သတ္တပတ်၏နေ့ သို့မဟုတ် လအမည်ကို ရယူရန် နည်းလမ်းနှစ်ခုရှိသည်။
- locale module ဖြင့် locale ကိုပြောင်းပါ။
- လုပ်ဆောင်ချက်အသစ်ကို သတ်မှတ်ပါ။
datetime module ၏အခြေခံအသုံးပြုမှုနှင့်ရက်စွဲနှင့်အချိန် (ရက်စွဲ၊ အချိန်) နှင့် strings များအကြားပြောင်းလဲခြင်းအတွက် method strptime() နှင့် strftime() ဆိုင်ရာ နောက်ထပ်အချက်အလက်များအတွက်၊ အောက်ပါဆောင်းပါးများကို ဖတ်ရှုပါ။
- ဆက်စပ်ဆောင်းပါးများ-ရက်စွဲများနှင့် အချိန်များကို Python ၏ datetime ဖြင့် strings များသို့ ပြောင်းခြင်း။(
strftime
၊strptime
)
locale module ဖြင့် locale ကိုပြောင်းပါ။
Python standard library သည် locale settings ကို ထိန်းချုပ်ရန် locale module တစ်ခုကို ပံ့ပိုးပေးပါသည်။
၎င်းသည် ပတ်၀န်းကျင်အပေါ် မူတည်သော်လည်း၊ ဥပမာ ပတ်ဝန်းကျင်တွင်၊ strftime() နည်းလမ်းရှိ အောက်ပါဖော်မတ်ကုဒ်ကို အသုံးပြု၍ ရက်သတ္တပတ်နှင့် လများ၏ အမည်များကို အင်္ဂလိပ်အမှတ်အသားဖြင့် ရယူနိုင်သည်။%A
၊%a
၊%B
၊%b
အောက်ပါဥပမာသည် ရက်စွဲနှင့်အချိန် (ရက်စွဲနှင့်အချိန်) ကိုကိုယ်စားပြုရန် ရက်စွဲအချိန်အရာဝတ္တုကို အသုံးပြုသော်လည်း ရက်စွဲအချက်အလက်များသာရှိသည့် ရက်စွဲအရာဝတ္ထုအတွက် အလားတူပင်ဖြစ်သည်။
import datetime
import locale
dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00
print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan
LC_TIME၊ အချိန်ဖော်မတ်အတွက် ဒေသန္တရ အမျိုးအစားဆက်တင်ကို locale.getlocale() ဖြင့် စစ်ဆေးပြီး ၎င်းကို None ဟု သတ်မှတ်ထားသည်။ ဤရလဒ်သည် ပတ်ဝန်းကျင်အပေါ် မူတည်သည်။
print(locale.getlocale(locale.LC_TIME))
# (None, None)
ဂျပန်ဘာသာဖြင့် နေ့နှင့်လအမည်များကို ရယူရန် locale.setlocale() တွင် Japanese (UTF-8) ja_JP.UTF-8 သို့ LC_TIME locale.LC_ALL သည် ဒေသဆိုင်ရာ အမျိုးအစားအားလုံးကို သတ်မှတ်ရန် အသုံးပြုနိုင်ပြီး၊ သို့သော် ၎င်းသည် သက်ရောက်မှုရှိမည်၊ ဥပမာ၊ ဥပမာ LC_MONETARY၊
ဤပြောင်းလဲမှုများသည် ဤကုဒ်တွင်သာ အကျိုးသက်ရောက်မှုရှိသည်ကို သတိပြုပါ။ စနစ်ပတ်ဝန်းကျင် ကိန်းရှင်များကို ပြန်လည်ရေးသားမည်ဟု မဆိုလိုပါ။
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
print(locale.getlocale(locale.LC_TIME))
# ('ja_JP', 'UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# 月曜日, 月, 1月, 1
အင်္ဂလိပ် သို့မဟုတ် ဂျာမန်ကဲ့သို့ အခြားဘာသာစကားမှတ်စုများကို အသုံးပြုရန် ဒေသဆိုင်ရာ ဆက်တင်များကို သင်ပြောင်းနိုင်သည်။
locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Monday, Mon, January, Jan
locale.setlocale(locale.LC_TIME, 'de_DE.UTF-8')
print(dt.strftime('%A, %a, %B, %b'))
# Montag, Mo, Januar, Jan
မည်သည့်ဘာသာစကားဖြင့် ရက်စွဲစာကြောင်းမှ ပေးထားသည့် ရက်စွဲတစ်ခုအတွက် ရက်သတ္တပတ်၏နေ့ရက်ကို ရယူလိုပါက၊ အောက်ပါအဆင့်များကို လိုက်နာခြင်းဖြင့် သင်ပြုလုပ်နိုင်ပါသည်။
- locale.setlocale() ရှိ လိုချင်သော ဘာသာစကား ဆက်တင်၏ တန်ဖိုး (ဥပမာ ja_JP.UTF-8) သို့ LC_TIME
- strptime() ဖြင့် string တစ်ခုကို datetime object သို့ ပြောင်းခြင်း
- အောက်ပါဖော်မတ်ကုဒ်ဖြင့် ထို datetime အရာဝတ္တုတွင် strftime() ကိုခေါ်ဆိုပါ။:
%A
၊%a
၊%B
၊%b
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
s = '2018-01-01'
s_dow = datetime.datetime.strptime(s, '%Y-%m-%d').strftime('%A')
print(s_dow)
# 月曜日
လုပ်ဆောင်ချက်အသစ်ကို သတ်မှတ်ပါ။
လုပ်ဆောင်ချက်အသစ်တစ်ခုကို သတ်မှတ်ခြင်းဖြင့် ၎င်းကို အောင်မြင်နိုင်သည်။
datetime object ၏ weekday() method သည် တနင်္လာနေ့အတွက် 0 နှင့် တနင်္ဂနွေအတွက် 6 ကိန်းပြည့်တန်ဖိုးကိုပေးသည်။
import datetime
dt = datetime.datetime(2018, 1, 1)
print(dt)
# 2018-01-01 00:00:00
print(dt.weekday())
# 0
print(type(dt.weekday()))
# <class 'int'>
တနင်္လာနေ့အတွက် 1 နှင့် 7 တနင်္ဂနွေအတွက် ကိန်းပြည့်တန်ဖိုးကို ပြန်ပေးသည့် အလားတူနည်းလမ်းတစ်ခုရှိပါသည်။ သိမ်မွေ့သော ခြားနားချက် ရှိသည်ကို သတိပြုပါ။
print(dt.isoweekday())
# 1
print(type(dt.isoweekday()))
# <class 'int'>
ဘာသာစကား စာကြောင်းတစ်ခုစီအတွက် ရက်သတ္တပတ်၏ နေ့ရက်များ၏ အမည်များစာရင်းကို သတ်မှတ်ပြီး weekday() နည်းလမ်းဖြင့် ရရှိသော ကိန်းပြည့်တန်ဖိုးများကို အသုံးပြု၍ ၎င်းတို့ကို ပြန်လည်ရယူပါက၊ ကျွန်ုပ်တို့၏ ပန်းတိုင်ကို အောင်မြင်နိုင်မည်ဖြစ်သည်။