अजगर में आज की तारीख YYYY-MM-DD में मिल रही है?


325

मैं उपयोग कर रहा हूँ:

str(datetime.datetime.today()).split()[0]

आज की तारीख में लौटने के लिए YYYY-MM-DDप्रारूप ।

क्या इसे हासिल करने के लिए कम कच्चा रास्ता है?


3
"क्रूड" से आपका क्या मतलब है?
गोम्बत

4
शायद यह? \ n अब = datetime.datetime.now () \ n str (now.strftime ("Y-% m-% d")
Gombat

3
@Gombat क्या मैं मतलब है मेरे अनुभव में, वहां आमतौर पर है एक विभाजन, सूचकांक, concat बिना बात हम अजगर में चाहते हो के रास्ते में बनाया गया है, में शामिल होने आदि
Pyderman

जवाबों:


602

आप strftime का उपयोग कर सकते हैं :

from datetime import datetime

datetime.today().strftime('%Y-%m-%d')

इसके अतिरिक्त, किसी को भी एक शून्य-गद्देदार घंटा, मिनट, और दूसरा की तलाश है: ( गेब्रियल स्टेपल द्वारा टिप्पणी )

datetime.today().strftime('%Y-%m-%d-%H:%M:%S')

इस बात की भी प्रबल संभावना है कि "% x" काम करेगा ... लेकिन यह स्थानीय निर्भर है
जोरन बेस्ले सिप

19
किसी के लिए भी एक शून्य-गद्देदार घंटा, मिनट, और दूसरा की तलाश में:datetime.datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
गेब्रियल स्टेपल्स

कैसे बस के बारे में time.strftime("%Y-%m-%d")?
एड्रॉक्स

UTC तारीख के लिए:datetime.utcnow().strftime('%Y-%m-%d')
अगस्ता बिरो

वर्थ नोटिंग जिसमें dateयह उपलब्ध हैdatetime
डमीडेव

116

आप datetime.date.today()परिणामी datetime.dateवस्तु को स्ट्रिंग में उपयोग और परिवर्तित कर सकते हैं :

from datetime import date
today = str(date.today())
print(today)   # '2017-12-26'

क्या विभाजक को बदलना संभव है /?
स्टेविसीक

3
@StevenVascellaro यह होगाdate.today().strftime('%Y/%m/%d')
kmonsoor

2
@StevenVascellaro बुरा विचार। पाठक सामान्यतया विभाजक .को 'DMY', विभाजक /को M/D/Yऔर विभाजक को मानता -है Y-M-D। हालांकि हर कोई इन दिशानिर्देशों का पालन नहीं करता है, यह अंतरराष्ट्रीय स्तर पर तारीखों को पढ़ने में मदद करेगा, जब तक कि हर कोई स्विच नहीं करता Y-M-D
ग्लॉगल

1
@glglgl मैं अमेरिकी तिथि प्रारूप m / d / y मानने वाले एपीआई के साथ काम कर रहा हूं। मैंने पहले ही अपने आवेदन में क्रम बदल दिया है।
Stevoisiak

1
@glglgl हाँ, मैं
Stevoisiak

35

अगर आप फनी कोड्स को याद करना पसंद करते हैं तो डेटाइम सिर्फ प्यारा है क्या आप सादगी पसंद नहीं करेंगे?

>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'

यह मॉड्यूल आपको समझने के लिए पर्याप्त चतुर है

बस करो pip install arrow

परिशिष्ट: इस उत्तर पर अभ्यास करने वालों के उत्तर में, मुझे केवल यह कहना चाहिए कि तीर पायथन में तिथियों से निपटने के लिए वैकल्पिक तरीकों में से एक का प्रतिनिधित्व करता है । यह वही है जो मैं सुझाव देना चाहता था।


17
इस तरह के एक साधारण कार्य के लिए, जब अंतर्निहित पुस्तकालय इसे बस के रूप में कर सकते हैं तो अन्य पुस्तकालय का उपयोग क्यों करें। बेशक, अगर उपयोगकर्ता को {समय, दिनांक} -रेल किए गए कार्यों की अन्य भीड़ की आवश्यकता है, तो एक नई लाइब्रेरी में लाना समझ में आता है।
kmonsoor

2
आपने मुझे उस 2 लाइन कोड को पढ़ने पर हँसाया। यह कैसे बेहतर है print(date.today())>> "2018-12-16" ?? lol और आसानी से अंतर मान प्राप्त करें t.year,t.month,t.day+1>> (2018, 12, 17) जहां t = date.today()और वास्तव में लोगों को उन्हें समय बताने के लिए ग्रीन एरो पर कॉल करने की आवश्यकता नहीं है। हे भगवान यह याद करने के लिए बहुत अधिक कोड है ...
पोद्दले

1
@ पद: प्रफुल्लित।
बिल बेल

@kmonsoor से import datetimeअलग कैसे है import arrow? निश्चित रूप से एक में बनाया गया है, लेकिन यदि arrowएक अधिक सुविधाजनक प्रारूप प्रदान करता है, तो इसका उपयोग क्यों न करें?
information_interchange

1
@information_interchange ने पहले ही आपके प्रश्न का उत्तर दे दिया है। बिल्ट-इन बनाम नहीं। अगर किसी को उन अतिरिक्त सामानों की आवश्यकता है, तो निश्चित रूप से, क्यों नहीं arrow? लेकिन, कई सरल परियोजनाओं के लिए, यह सिर्फ अनावश्यक है। इसके अलावा, कई कंपनी-आंतरिक परियोजनाओं में, पीपीएल को नए पुस्तकालयों को शामिल करने के लिए अनुमोदन प्राप्त करने की आवश्यकता है।
kmonsoor

30

मैं हमेशा इसके लिए isoformat()फ़ंक्शन का उपयोग करता हूं ।

from datetime import date    
today = date.today().isoformat()
print(today) # '2018-12-05'

ध्यान दें कि यह डेटाइम ऑब्जेक्ट्स पर भी काम करता है यदि आपको मानक प्रारूप में समय की आवश्यकता है।

from datetime import datetime
now = datetime.today().isoformat()
print(now) # '2018-12-05T11:15:55.126382'

15

अन्य उत्तर से अजगर के उपयोग का सुझाव मिलता है datetime.datetime, लेकिन जैसा कि @ बेल ने कहा, अन्य पुस्तकालय हैं जो datetimeसेवा के रूप में या एपीआई के एक बड़े पारिस्थितिकी तंत्र के हिस्से के रूप में सरल इंटरफेस प्रदान करते हैं। यहां दो ऐसी लाइब्रेरी हैं, जिनके साथ काम करना मुश्किल हैdatetimes बहुत ही सरल तरीके से ।

पांडा

आप पंडों के पुस्तकालय pd.to_datetimeसे उपयोग कर सकते हैं । यहां विभिन्न विकल्प दिए गए हैं, इस पर निर्भर करता है कि आप क्या चाहते हैं।

import pandas as pd

pd.to_datetime('today')  # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')

अजगर डेटाइम ऑब्जेक्ट के रूप में,

pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)

स्वरूपित दिनांक स्ट्रिंग के रूप में,

pd.to_datetime('today').isoformat()
# '2019-04-18T04:03:32.493337'

# Or, `strftime` for custom formats.
pd.to_datetime('today').strftime('%Y-%m-%d')
# '2019-03-27'

टाइमस्टैम्प से सिर्फ तारीख पाने के लिए, कॉल करें Timestamp.date

pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)

अलग से to_datetime , आप सीधे किसी Timestampवस्तु का उपयोग कर सकते हैं ,

pd.Timestamp('today')  # pd.Timestamp('now')
# Timestamp('2019-04-18 03:43:33.233093')

pd.Timestamp('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)

यदि आप अपने टाइमस्टैम्प टाइमजोन को जागरूक करना चाहते हैं, तो tzतर्क के लिए एक टाइमज़ोन पास करें ।

pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')

पेंडुलम

यदि आप पेंडुलम के साथ काम कर रहे हैं , तो कुछ दिलचस्प विकल्प हैं। आप वर्तमान टाइमस्टैम्प का उपयोग करके now()या आज की तारीख का उपयोग करके प्राप्त कर सकते हैंtoday()

import pendulum 

pendulum.now()
# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))

pendulum.today()
# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

इसके अतिरिक्त, आप भी प्राप्त कर सकते हैं tomorrow()याyesterday() की तारीख सीधे किसी भी अतिरिक्त timedelta गणित करने के लिए बिना।

pendulum.yesterday()
# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

pendulum.tomorrow()
# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

विभिन्न स्वरूपण विकल्प उपलब्ध हैं।

pendulum.now().to_date_string()
# '2019-03-27'

pendulum.now().to_formatted_date_string()
# 'Mar 27, 2019'

pendulum.now().to_day_datetime_string()
# 'Wed, Mar 27, 2019 12:04 AM'

3
महान समाचार पंडों के पास भी है!
ZygD

1
यह वास्तव में बहुत बढ़िया है, विशेष रूप से जब कोई पांडा पर काम कर रहा है
19 को

यदि आप पांडा का उपयोग कर रहे हैं और एक str में कनवर्ट नहीं करना चाहते हैं तो pd.to_datetime (दिन) .date () उपयोगी है। धन्यवाद!
ब्रांडन

4

बहुत देर से जवाब, लेकिन आप उपयोग कर सकते हैं:

import time
today = time.strftime("%Y-%m-%d")
# 2020-02-14

1
धन्यवाद, यह सबसे साफ है।
बारब्रोस


-5

मैं इसे पसंद करता हूं, क्योंकि यह सरल है, लेकिन शायद किसी तरह अक्षम और छोटी गाड़ी है। यदि आप जोरदार त्रुटि-प्रूफ कार्यक्रम चाहते हैं, तो आपको शेल कमांड के निकास कोड की जांच करनी चाहिए ।

os.system('date +%Y-%m-%d')

4
इसका उपयोग केवल इस बात के लिए किया जाना चाहिए कि सिस्टम दिनांक कमांड क्या लौटाएगा, बजाय वास्तव में एक तारीख को प्रारूपित करने के। यह एक्जिट कोड की जाँच के अलावा कई कारणों से है। 1. पोर्टेबल नहीं। विंडोज पर तारीख कमांड सेट तिथि 2. अकुशल। इसे एक संपूर्ण शेल बनाना है, जिसे तब पार्स करना है, कमांड को ढूंढना और निष्पादित करना है, आउटपुट को वापस करना है, और फिर उस शेल को नष्ट करना है 3. यह बस unpythonic है - यह दर्शाता है कि आप अच्छी तरह से ज्ञात मूलभूत पुस्तकालयों को नहीं जानते हैं, और उस कोड को देखने वाले भाषा के लिए नए लोगों को भी भ्रमित कर सकते हैं
कप्तान लेप्टन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.