पठनीय प्रारूप तिथि के साथ मैं एक स्ट्रिंग में एक अजगर डेटाइम को कैसे बदलूं?


171
t = e['updated_parsed']
dt = datetime.datetime(t[0],t[1],t[2],t[3],t[4],t[5],t[6]
print dt
>>>2010-01-28 08:39:49.000003

मैं इसे एक तार में कैसे बदलूं ?:

"January 28, 2010"

8
dt = datetime.datetime(*t[:7])

जवाबों:


242

डेटाइम क्लास में एक विधि है। पायथन डॉक्स को स्वीकार किए जाने वाले विभिन्न स्वरूपों का दस्तावेज़ देता है:

इस विशिष्ट उदाहरण के लिए, यह कुछ इस तरह दिखाई देगा:

my_datetime.strftime("%B %d, %Y")

1
गूंगा सवाल ... क्या strftimeपायथन 2 और 3 के बीच अंतर है?
jww

और अगर विच तरीके से
Xanlantos

112

यहाँ है कि आप अजगर के सामान्य स्वरूपण फ़ंक्शन का उपयोग करके इसे कैसे पूरा कर सकते हैं ...

>>>from datetime import datetime
>>>"{:%B %d, %Y}".format(datetime.now())

यहाँ उपयोग किए जाने वाले स्वरूपण वर्ण वही हैं जो स्ट्रैफ़टाइम द्वारा उपयोग किए जाते हैं । : प्रारूप निर्दिष्ट करने में अग्रणी न चूकें ।

ज्यादातर मामलों में स्ट्रैपटाइम () के बजाय प्रारूप () का उपयोग करके कोड को अधिक पठनीय बनाया जा सकता है, लिखने में आसान और स्वरूपित आउटपुट उत्पन्न होने के तरीके के अनुरूप ...

>>>"{} today's date is: {:%B %d, %Y}".format("Andre", datetime.now())

निम्नलिखित strftime () वैकल्पिक के साथ ऊपर की तुलना करें ...

>>>"{} today's date is {}".format("Andre", datetime.now().strftime("%B %d, %Y"))

इसके अलावा, निम्नलिखित काम नहीं कर रहा है ...

>>>datetime.now().strftime("%s %B %d, %Y" % "Andre")
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    datetime.now().strftime("%s %B %d, %Y" % "Andre")
TypeError: not enough arguments for format string

और इसी तरह...


1
मैं सोच रहा था कि इस मामले के लिए प्रारूप () का उपयोग करने के क्या लाभ हैं, स्ट्रैप्टाइम () पर। क्या या तो विधि व्यक्तिगत पसंद के अलावा एक लाभ पेश करती है? प्रदर्शन के अंतर क्या हैं?
आंद्रे

2
@ अपने सवाल के लिए धन्यवाद! व्यक्तिगत वरीयताओं को अक्सर अनुभव द्वारा निर्देशित किया जाता है। कृपया मेरे अद्यतन उत्तर को देखें कि मैं स्ट्रैपटाइम () से अधिक प्रारूप () क्यों पसंद करता हूं। प्रदर्शन और पायथन दो शब्द हैं जो एक साथ ठीक नहीं चलते हैं। अगर मैं पाइथन का उपयोग करने का निर्णय ले चुका हूं तो मुझे प्रदर्शन से अधिक चिंता नहीं होगी। जब मुझे प्रदर्शन की आवश्यकता होती है तो मैं कुछ स्टेटिकली टाइप की गई उच्च प्रदर्शन भाषा का उपयोग करता हूं।
ऑटोडिडैक्ट

1
ज्यादातर मामलों में प्रारूप विधि सरल है। की तुलना करें: print 'Today is {:%B %d, %Y}'.format(datetime.now())करने के लिए print 'Today is {}'.format(datetime.now().strftime('%B %d, %Y')। जब आप किसी भी तरह से प्रारूप () विधि का उपयोग कर रहे हैं, तो इसका उपयोग दिनांक स्वरूपण के लिए भी क्यों न करें?
21

30

एफ-स्ट्रिंग्स का उपयोग करते हुए, पायथन में 3.6+।

from datetime import datetime

date_string = f'{datetime.now():%Y-%m-%d %H:%M:%S%z}'

यह सिंटैक्स त्रुटि को फेंकता है: "सिंटैक्सएयर: अमान्य सिंटैक्स"। क्या आप कृपया विस्तार से बता सकते हैं?
साजिद

ठीक। मेरे पास पायथन 3.5.1 है। इसीलिए। स्पष्टीकरण के लिए धन्यवाद।
साजिद

21

बहुत पुराना सवाल है, मुझे पता है। लेकिन नए एफ-स्ट्रिंग्स (अजगर 3.6 से शुरू) के साथ नए विकल्प हैं। तो यहाँ पूर्णता के लिए:

from datetime import datetime

dt = datetime.now()

# str.format
strg = '{:%B %d, %Y}'.format(dt)
print(strg)  # July 22, 2017

# datetime.strftime
strg = dt.strftime('%B %d, %Y')
print(strg)  # July 22, 2017

# f-strings in python >= 3.6
strg = f'{dt:%B %d, %Y}'
print(strg)  # July 22, 2017

strftime()और strptime()व्यवहार बताता है कि प्रारूप निर्दिष्ट करने वाले का क्या अर्थ है।



9

पायथन डेटाइम ऑब्जेक्ट में एक विधि विशेषता होती है, जो पठनीय प्रारूप में प्रिंट होती है।

>>> a = datetime.now()
>>> a.ctime()
'Mon May 21 18:35:18 2018'
>>> 

यह एक पठनीय प्रारूप में डेटाइम प्राप्त करने का सबसे अच्छा, सबसे आसान और तेज तरीका है।
मुजीब इशाक

-2

यह प्रारूप की तारीख के लिए है?

def format_date(day, month, year):
        # {} betekent 'plaats hier stringvoorstelling van volgend argument'
        return "{}/{}/{}".format(day, month, year)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.