பைத்தானின் நிலையான நூலக தேதி நேரத்தைப் பயன்படுத்தி, தேதிச் சரத்திலிருந்து தேதிநேரப் பொருளை உருவாக்கி, வாரத்தின் நாள் அல்லது மாதத்தின் பெயரை அதிலிருந்து ஒரு சரமாகப் பெறலாம். இருப்பினும், அந்த சரங்களின் மொழி சூழலின் இடத்தை (நாடு அல்லது பிராந்திய அமைப்பு) சார்ந்துள்ளது.
எந்த மொழியிலும் ஒரு தேதியிலிருந்து வாரம் அல்லது மாதத்தின் பெயரை வரிசையாகப் பெற இரண்டு வழிகள் உள்ளன.
- லோகேல் மாட்யூலுடன் லோகேலை மாற்றவும்
- ஒரு புதிய செயல்பாட்டை வரையறுக்கவும்
தேதிநேர தொகுதியின் அடிப்படை பயன்பாடு மற்றும் தேதி மற்றும் நேரம் (தேதி, நேரம்) மற்றும் சரங்களுக்கு இடையில் மாற்றுவதற்கான strptime() மற்றும் strftime() முறைகள் பற்றிய கூடுதல் தகவலுக்கு, பின்வரும் கட்டுரைகளைப் பார்க்கவும்.
- தொடர்புடைய கட்டுரைகள்:பைத்தானின் தேதி நேரத்துடன் தேதிகளையும் நேரங்களையும் சரங்களாக மாற்றுகிறது(
strftime
,strptime
)
லோகேல் தொகுதியுடன் மொழியை மாற்றவும்
பைதான் ஸ்டாண்டர்ட் லைப்ரரி, லோகேல் அமைப்புகளைக் கட்டுப்படுத்த லோக்கல் மாட்யூலை வழங்குகிறது.
இது சூழலைப் பொறுத்தது, ஆனால் உதாரண சூழலில், 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() மூலம் சரிபார்க்கப்பட்டது, மேலும் அது எதுவுமில்லை என அமைக்கப்பட்டுள்ளது. இந்த முடிவு சுற்றுச்சூழலைப் பொறுத்தது.
print(locale.getlocale(locale.LC_TIME))
# (None, None)
ஜப்பானிய மொழியில் நாள் மற்றும் மாதப் பெயர்களைப் பெற, locale.setlocale() இல் LC_TIME முதல் ஜப்பானிய (UTF-8) ja_JP.UTF-8 வரை. 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() உடன் ஒரு சரத்தை தேதி நேர பொருளாக மாற்றுதல்
- பின்வரும் வடிவமைப்புக் குறியீட்டைக் கொண்டு அந்த தேதி நேரப் பொருளில் 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)
# 月曜日
ஒரு புதிய செயல்பாட்டை வரையறுக்கவும்
ஒரு புதிய செயல்பாட்டை வரையறுப்பதன் மூலம் இதை அடைய முடியும்.
டேட் டைம் ஆப்ஜெக்ட்டின் வாரநாள்() முறையானது திங்கட்கிழமைக்கு 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'>
இதேபோன்ற முறை உள்ளது, isoweekday(), இது திங்கட்கிழமைக்கு 1 மற்றும் ஞாயிற்றுக்கிழமைக்கு 7 இன் முழு எண் மதிப்பை வழங்குகிறது. ஒரு நுட்பமான வேறுபாடு உள்ளது என்பதை நினைவில் கொள்க.
print(dt.isoweekday())
# 1
print(type(dt.isoweekday()))
# <class 'int'>
ஒவ்வொரு மொழி சரத்திற்கும் வாரத்தின் நாட்களின் பெயர்களின் பட்டியலை வரையறுத்து, வாரநாள்() முறை மூலம் பெறப்பட்ட முழு எண் மதிப்புகளைப் பயன்படுத்தி அவற்றை மீட்டெடுத்தால், நம் இலக்கை அடையலாம்.