पाइथन मिति समय (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 ढाँचामा क्यालेन्डरहरू उत्पन्न गर्दछ।

datetime वस्तु

मिति समय वस्तु भनेको मिति (वर्ष, महिना, दिन) र समय (घण्टा, मिनेट, सेकेन्ड, माइक्रोसेकेन्ड) जानकारी भएको वस्तु हो। तपाइँ निम्न विशेषताहरु संग ती जानकारी पहुँच गर्न सक्नुहुन्छ।

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

datetime.now():आजको मिति, वर्तमान समय

datetime.now() ले तपाईंलाई आजको मिति (हालको मिति) र हालको समयको साथ datetime वस्तु दिनेछ।

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)

निम्न मानहरू आवश्यक छन् र अरूलाई हटाउन सकिन्छ। यदि हटाइयो भने, पूर्वनिर्धारित मान ० हो।

  • 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'>

मिति वस्तु

मिति वस्तु भनेको मिति (वर्ष, महिना, दिन) ’bout जानकारी समावेश गर्ने वस्तु हो। यसलाई वर्ष, महिना र दिन विशेषताहरू द्वारा पहुँच गर्न सकिन्छ।

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

समय वस्तु

समय वस्तु भनेको समय (घण्टा, मिनेट, सेकेन्ड, र माइक्रोसेकेन्ड) ’bout जानकारी समावेश गर्ने वस्तु हो। यसलाई घण्टा, मिनेट, सेकेन्ड, र माइक्रोसेकेन्ड विशेषताहरू प्रयोग गरेर पहुँच गर्न सकिन्छ।

समय वस्तुको लागि कन्स्ट्रक्टर

समय वस्तुको कन्स्ट्रक्टर निम्नानुसार छ।

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

ती सबै ऐच्छिक छन्, र यदि तिनीहरू मेटाइएमा, तिनीहरू ० मा सेट हुन्छन्।

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 वस्तु

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)

ती सबै ऐच्छिक छन्, र यदि तिनीहरू मेटाइएमा, तिनीहरू ० मा सेट हुन्छन्।

याद गर्नुहोस् कि टाइमडेल्टा वस्तुले निम्न जानकारी मात्र राख्छ।

  • धेरै दिन: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():मिति र समयबाट स्ट्रिङमा रूपान्तरण

datetime र मिति वस्तुहरूको strftime() विधि कुनै पनि ढाँचा ढाँचामा मिति र समय (मिति र समय) जानकारीलाई स्ट्रिङमा रूपान्तरण गर्न प्रयोग गर्न सकिन्छ।

ढाँचा कोड

उपलब्ध ढाँचा कोडहरूको लागि तलको आधिकारिक दस्तावेज हेर्नुहोस्।

मुख्य ढाँचा कोडहरू तल सूचीबद्ध छन्।

  • %d:शून्य भरिएको दशमलव अंकमा महिनाको दिन।
  • %m:शून्य भरिएको दशमलव अंकमा महिना।
  • %y:शून्यले भरिएको दशमलव सङ्केतमा वर्षको अन्तिम दुई अंकहरू।
  • %Y:शून्य भरिएको दशमलव सङ्केतमा वर्षका चार अंकहरू।
  • %H:शून्य भरिएको दशमलव सङ्केतमा व्यक्त गर्दा (२४-घण्टा सङ्केत)
  • %I:शून्य भरिएको दशमलव सङ्केतमा व्यक्त गर्दा (१२-घण्टा सङ्केत)
  • %M:शून्य भरिएको दशमलव सङ्केतका लागि।
  • %S:शून्य भरिएको दशमलव सङ्केतमा सेकेन्ड।
  • %f:० भरिएको दशमलव सङ्केतमा माइक्रोसेकेन्डहरू (६ अंकहरू)।
  • %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() मिति वा समय स्ट्रिङबाट datetime वस्तु सिर्जना गर्न प्रयोग गर्न सकिन्छ। मूल स्ट्रिङसँग मिल्दोजुल्दो ढाँचा स्ट्रिङ निर्दिष्ट गर्न आवश्यक छ।

त्यहाँ ISO 8601 स्ट्रिङहरू (Python 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