பைதான் தேதிநேரத்தில் (strftime, strptime) தேதிகளையும் நேரங்களையும் சரங்களாக மாற்றுகிறது

வணிக

பைத்தானின் நிலையான நூலக தேதி நேரத்தை தேதிகள் மற்றும் நேரங்களை (தேதிகள், நேரங்கள் மற்றும் நேரங்கள்) செயலாக்க பயன்படுத்தலாம். strftime() மற்றும் strptime() முறைகள், தேதிகள் மற்றும் நேரங்களை சரங்களாக மாற்றும், தேதிகள் மற்றும் நேரங்களை பல்வேறு வடிவங்களில் கையாள பயன்படுத்தலாம்.

இது கழித்தல் மற்றும் கூட்டல் போன்ற செயல்பாடுகளையும் செய்யலாம். எடுத்துக்காட்டாக, நீங்கள் எளிதாகக் கணக்கிட்டு 10 நாட்களுக்கு முந்தைய தேதி அல்லது இப்போது இருந்து 3 வாரங்கள் அல்லது இப்போதிலிருந்து 50 நிமிடங்கள் நேரத்தைப் பெறலாம்.

முதலில், தேதிநேர தொகுதியில் கிடைக்கும் பொருள்களின் பின்வரும் வகுப்புகளை விவரிப்போம்.

  • datetime.datetime:தேதி மற்றும் நேரம் (தேதி மற்றும் நேரம்)
  • datetime.date:தேதி
  • datetime.time:நேரம்
  • datetime.timedelta:நேர வேறுபாடு மற்றும் கழிந்த நேரம்

தேதி/நேரம் மற்றும் சரத்தை ஒன்றுக்கொன்று மாற்றும் முறைகள் strftime() மற்றும் strptime() ஆகியவையும் விளக்கப்பட்டுள்ளன.

  • datetimeபொருள்
    • datetime.now():இன்றைய தேதி, தற்போதைய நேரம்
    • datetimeபொருள் கட்டமைப்பாளர்
    • தேதி நேர பொருளை தேதி பொருளாக மாற்றுதல்
  • dateபொருள்
    • date.today():இன்றைய தேதி
    • தேதிப் பொருளுக்கான கன்ஸ்ட்ரக்டர்
  • timeபொருள்
    • நேரப் பொருளுக்குக் கட்டமைப்பாளர்
  • timedeltaபொருள்
    • டைம்டெல்டா பொருட்களை உருவாக்க, தேதி நேரம் மற்றும் தேதி பொருள்களை கழிக்கவும்.
    • டைம்டெல்டா பொருளுக்கான கன்ஸ்ட்ரக்டர்
    • டைம்டெல்டா பொருட்களைப் பயன்படுத்தி கழித்தல் மற்றும் கூட்டல்
  • strftime():தேதி மற்றும் நேரத்திலிருந்து சரத்திற்கு மாற்றம்
  • strptime():சரத்திலிருந்து தேதி மற்றும் நேரத்திற்கு மாற்றம்

நிலையான நூலகத்தில் காலண்டர் தொகுதி சேர்க்கப்பட்டுள்ளது, இது காலெண்டர்களை எளிய உரை அல்லது HTML வடிவத்தில் உருவாக்குகிறது.

தேதி நேர பொருள்

தேதி நேரப் பொருள் என்பது தேதி (ஆண்டு, மாதம், நாள்) மற்றும் நேரம் (மணி, நிமிடம், வினாடி, மைக்ரோ செகண்ட்) ஆகிய இரண்டும் கொண்ட ஒரு பொருளாகும். பின்வரும் பண்புக்கூறுகள் மூலம் நீங்கள் அந்த தகவலை அணுகலாம்.

  • year
  • month
  • day
  • hour
  • minute
  • second
  • microsecond

datetime.now():இன்றைய தேதி, தற்போதைய நேரம்

datetime.now() இன்றைய தேதி (தற்போதைய தேதி) மற்றும் தற்போதைய நேரத்தைக் கொண்ட தேதிநேர பொருளை உங்களுக்கு வழங்கும்.

import datetime

dt_now = datetime.datetime.now()
print(dt_now)
# 2018-02-02 18:31:13.271231

print(type(dt_now))
# <class 'datetime.datetime'>

print(dt_now.year)
# 2018

print(dt_now.hour)
# 18

டேட் டைம் பொருளுக்கான கன்ஸ்ட்ரக்டர்

தன்னிச்சையான தேதிகள் மற்றும் நேரங்களுக்கான தேதிநேர பொருட்களை உருவாக்குவதும் சாத்தியமாகும்.

டேட் டைம் ஆப்ஜெக்ட்டுக்கான கன்ஸ்ட்ரக்டர் பின்வருமாறு.

datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

பின்வரும் மதிப்புகள் தேவை மற்றும் மற்றவை தவிர்க்கப்படலாம். தவிர்க்கப்பட்டால், இயல்புநிலை மதிப்பு 0 ஆகும்.

  • year
  • month
  • day
dt = datetime.datetime(2018, 2, 1, 12, 15, 30, 2000)
print(dt)
# 2018-02-01 12:15:30.002000

print(dt.minute)
# 15

print(dt.microsecond)
# 2000

dt = datetime.datetime(2018, 2, 1)
print(dt)
# 2018-02-01 00:00:00

print(dt.minute)
# 0

தேதி நேர பொருளை தேதி பொருளாக மாற்றுதல்

அடுத்து விவரிக்கப்பட்டுள்ளபடி, தேதி() முறையின் மூலம் தேதி நேரப் பொருளை தேதிப் பொருளாக மாற்றலாம்.

print(dt_now)
print(type(dt_now))
# 2018-02-02 18:31:13.271231
# <class 'datetime.datetime'>

print(dt_now.date())
print(type(dt_now.date()))
# 2018-02-02
# <class 'datetime.date'>

தேதி பொருள்

தேதி பொருள் என்பது ஒரு தேதி (ஆண்டு, மாதம், நாள்) பற்றிய தகவல்களைக் கொண்ட ஒரு பொருள். ஆண்டு, மாதம் மற்றும் நாள் ஆகிய பண்புக்கூறுகளால் இதை அணுகலாம்.

date.today():இன்றைய தேதி

தற்போதைய தேதியின் (இன்றைய தேதி) தேதி பொருளை date.today() உடன் பெறலாம்.

d_today = datetime.date.today()
print(d_today)
# 2018-02-02

print(type(d_today))
# <class 'datetime.date'>

print(d_today.year)
# 2018

தேதிப் பொருளுக்கான கன்ஸ்ட்ரக்டர்

தேதி பொருளின் கட்டமைப்பாளர் பின்வருமாறு

date(year, month, day)

அனைத்து தேவை மற்றும் தவிர்க்க முடியாது.

d = datetime.date(2018, 2, 1)
print(d)
# 2018-02-01

print(d.month)
# 2

நேர பொருள்

நேரப் பொருள் என்பது நேரத்தைப் பற்றிய தகவல்களைக் கொண்ட ஒரு பொருள் (மணி, நிமிடங்கள், வினாடிகள் மற்றும் மைக்ரோ விநாடிகள்). மணிநேரம், நிமிடம், வினாடி மற்றும் மைக்ரோ செகண்ட் ஆகியவற்றைப் பயன்படுத்தி இதை அணுகலாம்.

நேரப் பொருளுக்குக் கட்டமைப்பாளர்

காலப் பொருளின் கட்டமைப்பாளர் பின்வருமாறு.

time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)

அவை அனைத்தும் விருப்பமானவை, அவை தவிர்க்கப்பட்டால், அவை 0 ஆக அமைக்கப்படும்.

t = datetime.time(12, 15, 30, 2000)
print(t)
# 12:15:30.002000

print(type(t))
# <class 'datetime.time'>

print(t.hour)
# 12

t = datetime.time()
print(t)
# 00:00:00

timedelta பொருள்

டைம்டெல்டா ஆப்ஜெக்ட் என்பது இரண்டு தேதிகள் மற்றும் நேரங்களுக்கிடையேயான நேர வேறுபாட்டை அல்லது கழிந்த நேரத்தைக் குறிக்கும் ஒரு பொருளாகும். இது நாட்கள், வினாடிகள் மற்றும் மைக்ரோ விநாடிகளில் தகவல்களைக் கொண்டுள்ளது, மேலும் நாட்கள், வினாடிகள் மற்றும் மைக்ரோ விநாடிகள் ஆகிய பண்புக்கூறுகளால் அணுகலாம். total_seconds() முறையைப் பயன்படுத்தி மொத்த வினாடிகளின் எண்ணிக்கையையும் பெற முடியும்.

டைம்டெல்டா பொருளை உருவாக்க, தேதி நேரத்தையும் தேதி பொருட்களையும் கழிக்கவும்.

டேட் டைம் பொருட்களை ஒருவருக்கொருவர் கழித்தால் டைம்டெல்டா பொருள் கிடைக்கும்.

td = dt_now - dt
print(td)
# 1 day, 18:31:13.271231

print(type(td))
# <class 'datetime.timedelta'>

print(td.days)
# 1

print(td.seconds)
# 66673

print(td.microseconds)
# 271231

print(td.total_seconds())
# 153073.271231

தேதிப் பொருள்களை ஒன்றிலிருந்து ஒன்று கழிப்பது இதேபோல் டைம்டெல்டா பொருளைக் கொடுக்கும்.

டைம்டெல்டா பொருளுக்கான கன்ஸ்ட்ரக்டர்

டைம்டெல்டா பொருளின் கட்டமைப்பாளர் பின்வருமாறு

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

அவை அனைத்தும் விருப்பமானவை, அவை தவிர்க்கப்பட்டால், அவை 0 ஆக அமைக்கப்படும்.

டைம்டெல்டா பொருள் பின்வரும் தகவலை மட்டுமே கொண்டுள்ளது என்பதை நினைவில் கொள்க.

  • பல நாட்கள்:days
  • வினாடிகளின் எண்ணிக்கை:seconds
  • மைக்ரோ விநாடி எண்ணிக்கை:microseconds

உதாரணமாக, பின்வரும் இரண்டும் சமம்

  • weeks=1
  • days=7
td_1w = datetime.timedelta(weeks=1)
print(td_1w)
# 7 days, 0:00:00

print(td_1w.days)
# 7

டைம்டெல்டா பொருட்களைப் பயன்படுத்தி கழித்தல் மற்றும் கூட்டல்

கழித்தல் மற்றும் கூட்டல் போன்ற செயல்பாடுகளைச் செய்ய, டைம்டெல்டா பொருளை தேதி நேரம் மற்றும் தேதி பொருள்களுடன் பயன்படுத்தலாம். எடுத்துக்காட்டாக, நீங்கள் எளிதாகக் கணக்கிட்டு ஒரு வாரத்திற்கு முந்தைய தேதி அல்லது இப்போதிலிருந்து 10 நாட்களுக்குள் அல்லது இப்போதிலிருந்து 50 நிமிடங்கள் நேரத்தைப் பெறலாம்.

d_1w = d_today - td_1w
print(d_1w)
# 2018-01-26

td_10d = datetime.timedelta(days=10)
print(td_10d)
# 10 days, 0:00:00

dt_10d = dt_now + td_10d
print(dt_10d)
# 2018-02-12 18:31:13.271231

td_50m = datetime.timedelta(minutes=50)
print(td_50m)
# 0:50:00

print(td_50m.seconds)
# 3000

dt_50m = dt_now + td_50m
print(dt_50m)
# 2018-02-02 19:21:13.271231

ஒரு குறிப்பிட்ட தேதி வரையிலான நாட்களின் எண்ணிக்கையைக் கணக்கிடவும் இதைப் பயன்படுத்தலாம்.

d_target = datetime.date(2020, 7, 24)
td = d_target - d_today
print(td)
# 903 days, 0:00:00

print(td.days)
# 903

strftime():தேதி மற்றும் நேரத்திலிருந்து சரத்திற்கு மாற்றம்

தேதி நேரம் மற்றும் தேதி பொருள்களின் strftime() முறையானது தேதி மற்றும் நேரம் (தேதி மற்றும் நேரம்) தகவலை எந்த வடிவ வடிவத்திலும் சரமாக மாற்ற பயன்படுகிறது.

வடிவமைத்தல் குறியீடு

கிடைக்கக்கூடிய வடிவமைப்பு குறியீடுகளுக்கு கீழே உள்ள அதிகாரப்பூர்வ ஆவணங்களைப் பார்க்கவும்.

முக்கிய வடிவமைப்பு குறியீடுகள் கீழே பட்டியலிடப்பட்டுள்ளன.

  • %d:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறியீட்டில் மாதத்தின் நாள்.
  • %m:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறியீட்டில் மாதம்.
  • %y:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறியீட்டில் ஆண்டின் கடைசி இரண்டு இலக்கங்கள்.
  • %Y:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறியீட்டில் ஆண்டின் நான்கு இலக்கங்கள்.
  • %H:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறியீட்டில் வெளிப்படுத்தப்படும் போது (24-மணிநேர குறிப்பீடு)
  • %I:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறியீட்டில் வெளிப்படுத்தப்படும் போது (12-மணிநேரக் குறியீடு)
  • %M:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறிப்பிற்கு.
  • %S:பூஜ்ஜியம் நிரப்பப்பட்ட தசம குறிப்பில் வினாடிகள்.
  • %f:மைக்ரோ விநாடிகள் (6 இலக்கங்கள்) தசம குறியீட்டில் 0 நிரப்பப்பட்டது.
  • %A:இடத்திற்கான வாரத்தின் நாளின் பெயர்
  • %a:இடத்திற்கான நாளின் பெயர் (சுருக்கமான வடிவம்)
  • %B:உள்ளூர் மாதத்தின் பெயர்
  • %b:மாதத்தின் பெயர் (சுருக்கமான வடிவம்)
  • %j:பூஜ்ஜிய நிரப்புதலுடன் தசம குறியீட்டில் ஆண்டின் நாள்.
  • %U:பூஜ்ஜிய நிரப்புதலுடன் தசம குறியீட்டில் ஆண்டின் வார எண் (வாரம் ஞாயிற்றுக்கிழமை தொடங்குகிறது)
  • %W:பூஜ்ஜிய நிரப்புதலுடன் தசம குறியீட்டில் ஆண்டின் வார எண் (வாரம் திங்கட்கிழமை தொடங்குகிறது)

நாள் மற்றும் மாதப் பெயர்களுக்கான பின்வரும் வடிவமைப்புக் குறியீடுகள் மொழியைப் பொறுத்து வெவ்வேறு சரங்களில் பெறலாம்.

  • %A
  • %a
  • %B
  • %b

ஐஎஸ்ஓ 8601 ஃபார்மேட் ஸ்டிரிங்க்களுக்கு ஒரு பிரத்யேக முறையும் உள்ளது.

மாதிரி குறியீடு

print(dt_now.strftime('%Y-%m-%d %H:%M:%S'))
# 2018-02-02 18:31:13

print(d_today.strftime('%y%m%d'))
# 180202

print(d_today.strftime('%A, %B %d, %Y'))
# Friday, February 02, 2018

print('Day number (how many days in a year / January 1 is 001):', d_today.strftime('%j'))
print('Week number (the week starts on Sunday / New Year's Day is 00):', d_today.strftime('%U'))
print('Week number (the week begins on Monday / New Year's Day is 00):', d_today.strftime('%W'))
# Day number (how many days in a year / January 1 is 001): 033
# Week number (the week starts on Sunday / New Year's Day is 00): 04
# Week number (the week begins on Monday / New Year's Day is 00): 05

நீங்கள் ஒரு சரத்திற்கு பதிலாக ஒரு எண்ணைப் பெற விரும்பினால், அதை int() உடன் முழு எண்ணாக மாற்றவும்.

week_num_mon = int(d_today.strftime('%W'))
print(week_num_mon)
print(type(week_num_mon))
# 5
# <class 'int'>

டைம்டெல்டா பொருளுடன் இணைந்து, உருவாக்குவது எளிது, எடுத்துக்காட்டாக, எந்த வடிவத்திலும் இருவார தேதிகளின் பட்டியல்.

d = datetime.date(2018, 2, 1)
td = datetime.timedelta(weeks=2)
n = 8
f = '%Y-%m-%d'

l = []

for i in range(n):
    l.append((d + i * td).strftime(f))

print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']

print('\n'.join(l))
# 2018-02-01
# 2018-02-15
# 2018-03-01
# 2018-03-15
# 2018-03-29
# 2018-04-12
# 2018-04-26
# 2018-05-10

பட்டியலைப் புரிந்துகொள்ளும் குறிப்பைப் பயன்படுத்துவது சிறந்ததாகும்.

l = [(d + i * td).strftime(f) for i in range(n)]
print(l)
# ['2018-02-01', '2018-02-15', '2018-03-01', '2018-03-15', '2018-03-29', '2018-04-12', '2018-04-26', '2018-05-10']

strptime():சரத்திலிருந்து தேதி மற்றும் நேரத்திற்கு மாற்றம்

datetime strptime() ஆனது ஒரு தேதி அல்லது நேர சரத்திலிருந்து தேதிநேர பொருளை உருவாக்க பயன்படுகிறது. அசல் சரத்துடன் தொடர்புடைய வடிவமைப்பு சரத்தை குறிப்பிடுவது அவசியம்.

ISO 8601 சரங்களுக்கு (பைதான் 3.7 அல்லது அதற்குப் பிறகு) ஒரு பிரத்யேக முறையும் உள்ளது.

மாதிரி குறியீடு

date_str = '2018-2-1 12:30'
date_dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M')
print(date_dt)
# 2018-02-01 12:30:00

print(type(date_dt))
# <class 'datetime.datetime'>

மீட்டெடுக்கப்பட்ட தேதிநேர பொருளில் strftime() முறையைப் பயன்படுத்துவதன் மூலம், அசல் சரத்தை விட வேறு வடிவத்தில் தேதி மற்றும் நேரத்தை நீங்கள் குறிப்பிடலாம்.

print(date_dt.strftime('%Y-%m-%d %H:%M'))
# 2018-02-01 12:30

நீங்கள் அதை டேட் டைம் பொருளாக மாற்றினால், டைம்டெல்டா பொருள்களைக் கொண்டும் செயல்பாடுகளைச் செய்யலாம், எனவே எடுத்துக்காட்டாக, 10 நாட்களுக்கு முந்தைய தேதியின் சரத்தை அதே வடிவத்தில் உருவாக்கலாம்.

date_str = '2018-2-1'
date_format = '%Y-%m-%d'
td_10_d = datetime.timedelta(days=10)

date_dt = datetime.datetime.strptime(date_str, date_format)
date_dt_new = date_dt - td_10_d
date_str_new = date_dt_new.strftime(date_format)

print(date_str_new)
# 2018-01-22