పైథాన్ డేట్‌టైమ్‌లో తేదీలు మరియు సమయాలను స్ట్రింగ్‌లకు మరియు వాటి నుండి మార్చడం (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:0తో నిండిన దశాంశ సంజ్ఞామానంలో మైక్రోసెకన్లు (6 అంకెలు).
  • %A:లొకేల్ కోసం వారంలోని రోజు పేరు
  • %a:లొకేల్ కోసం రోజు పేరు (సంక్షిప్త రూపం)
  • %B:స్థానిక నెల పేరు
  • %b:స్థానిక నెల పేరు (సంక్షిప్త రూపం)
  • %j:జీరో ఫిల్‌తో దశాంశ సంజ్ఞామానంలో సంవత్సరంలోని రోజు.
  • %U:జీరో ఫిల్‌తో దశాంశ సంజ్ఞామానంలో సంవత్సరంలోని వారం సంఖ్య (వారం ఆదివారం ప్రారంభమవుతుంది)
  • %W:జీరో ఫిల్‌తో దశాంశ సంజ్ఞామానంలో సంవత్సరంలోని వారం సంఖ్య (వారం సోమవారం ప్రారంభమవుతుంది)

రోజు మరియు నెల పేర్ల కోసం క్రింది ఫార్మాటింగ్ కోడ్‌లను లొకేల్‌పై ఆధారపడి వివిధ స్ట్రింగ్‌లలో పొందవచ్చు.

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

ISO 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
Copied title and URL