केवल पायथन में तारीख के स्ट्रिंग में डेटाइम ऑब्जेक्ट कनवर्ट करें


282

मैं datetimeपायथन में किसी ऑब्जेक्ट को डेट स्ट्रिंग परिवर्तित करने पर बहुत कुछ देखता हूं , लेकिन मैं दूसरे रास्ते पर जाना चाहता हूं।
मुझे मिल गया है

datetime.datetime(2012, 2, 23, 0, 0)

और मैं इसे स्ट्रिंग में बदलना पसंद करूंगा '2/23/2012'

जवाबों:


487

आप अपनी तिथि को प्रारूपित करने में मदद करने के लिए स्ट्रैपटाइम का उपयोग कर सकते हैं ।

उदाहरण के लिए,

import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')

निकलेगा:

'02/23/2012'

फ़ॉर्मेटिंग के बारे में अधिक जानकारी यहाँ देखें


6
के लिए DateTimeFieldया DateFielddjango में बहुत उपयोगी है । धन्यवाद
erajuan

3
t = datetime.datetime.now()वर्तमान तिथि का उपयोग करने के लिए उपयोग करें
gizmole

जहां तक ​​मैं डॉक्स से कह सकता हूं कि गैर-शून्य गद्देदार तारीख यानी '2/23/2012' को वापस करने का कोई तरीका नहीं है।
रॉन किलियन

183

dateऔर datetimeऑब्जेक्ट (और timeसाथ ही) आउटपुट को निर्दिष्ट करने के लिए एक मिनी-भाषा का समर्थन करते हैं , और इसे एक्सेस करने के दो तरीके हैं:

  • प्रत्यक्ष विधि कॉल dt.strftime('format here'):; तथा
  • नई प्रारूप विधि: '{:format here}'.format(dt)

तो आपका उदाहरण देख सकते हैं:

dt.strftime('%m/%d/%Y')

या

'{:%m/%d/%Y}'.format(dt)

पूर्णता के लिए: आप सीधे ऑब्जेक्ट की विशेषताओं तक भी पहुंच सकते हैं, लेकिन तब आपको केवल नंबर मिलते हैं:

'%s/%s/%s' % (dt.month, dt.day, dt.year)

मिनी-भाषा सीखने के लिए लिया गया समय इसके लायक है।


संदर्भ के लिए, यहां लघु-भाषा में प्रयुक्त कोड हैं:

  • %a लोकल के संक्षिप्त नाम के रूप में सप्ताहांत।
  • %A लोकल का पूरा नाम वीकडे।
  • %w सप्ताहांत एक दशमलव संख्या के रूप में, जहां 0 रविवार है और 6 शनिवार है।
  • %d महीने का दिन शून्य-गद्देदार दशमलव संख्या के रूप में।
  • %b लोकेल के संक्षिप्त नाम के रूप में महीना।
  • %B स्थानीय नाम के रूप में महीना।
  • %m शून्य-गद्देदार दशमलव संख्या के रूप में महीना। 01, ..., 12
  • %y शून्य-गद्देदार दशमलव संख्या के रूप में सदी के बिना वर्ष। 00, ..., 99
  • %Y एक दशमलव संख्या के रूप में शताब्दी के साथ वर्ष। 1970, 1988, 2001, 2013
  • %H शून्य-गद्देदार दशमलव संख्या के रूप में घंटा (24-घंटे की घड़ी)। 00, ..., 23
  • %I शून्य-गद्देदार दशमलव संख्या के रूप में घंटा (12-घंटे की घड़ी)। 01, ..., 12
  • %p लोकेल का एएम या पीएम के बराबर।
  • %M शून्य-गद्देदार दशमलव संख्या के रूप में मिनट। 00, ..., 59
  • %S दूसरा शून्य-गद्देदार दशमलव संख्या के रूप में। 00, ..., 59
  • %f माइक्रोसेकंड एक दशमलव संख्या के रूप में, बाईं ओर शून्य-गद्देदार। 000000, ..., 999999
  • %z UTC फॉर्म + HHMM या -HHMM (रिक्त हो तो भोली), +0000, -0400, +1030 में ऑफसेट
  • %Z समय क्षेत्र का नाम (खाली होने पर भोला), यूटीसी, ईएसटी, सीएसटी
  • %j वर्ष का दिन शून्य-गद्देदार दशमलव संख्या के रूप में। 001, ..., 366
  • %U वर्ष की साप्ताहिक संख्या (रविवार पहला है) शून्य गद्देदार दशमलव संख्या के रूप में।
  • %W एक दशमलव संख्या के रूप में वर्ष की साप्ताहिक संख्या (सोमवार पहले है)।
  • %c लोकेल की उचित तिथि और समय प्रतिनिधित्व।
  • %x लोकेल की उचित तिथि प्रतिनिधित्व।
  • %X लोकेल का उचित समय प्रतिनिधित्व।
  • %% एक शाब्दिक '%' वर्ण।

29

एक अन्य विकल्प:

import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'

यद्यपि प्रश्न "केवल तारीख" प्राप्त करने के बारे में है, मैं ^ इस के लिए आया था, इसलिए धन्यवाद। इसके अलावा, थोड़ा और मानवीय स्ट्रिंग प्राप्त करने के लिए: datetime.datetime.now().ctime()==>'Wed Sep 4 13:12:39 2019'
डेनिस

13

आप सरल स्ट्रिंग प्रारूपण विधियों का उपयोग कर सकते हैं:

>>> dt = datetime.datetime(2012, 2, 23, 0, 0)
>>> '{0.month}/{0.day}/{0.year}'.format(dt)
'2/23/2012'
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year)
'2/23/2012'

3
इसी तरह, आप कुछ ऐसा कर सकते हैं '{:%Y-%m-%d %H:%M}'.format(datetime(2001, 2, 3, 4, 5))। पर pyformat.info अधिक देखें
mway


4

यदि आप datetimeस्ट्रिंग रूपांतरण का एक सरल तरीका खोज रहे हैं और प्रारूप को छोड़ सकते हैं। आप datetimeऑब्जेक्ट को परिवर्तित कर सकते हैं strऔर फिर ऐरे स्लाइसिंग का उपयोग कर सकते हैं ।

In [1]: from datetime import datetime

In [2]: now = datetime.now()

In [3]: str(now)
Out[3]: '2019-04-26 18:03:50.941332'

In [5]: str(now)[:10]
Out[5]: '2019-04-26'

In [6]: str(now)[:19]
Out[6]: '2019-04-26 18:03:50'

लेकिन निम्नलिखित बातों पर ध्यान दें। यदि AttributeErrorचर के Noneमामले में अन्य समाधान बढ़ेंगे तो इस मामले में आपको एक 'None'स्ट्रिंग प्राप्त होगी ।

In [9]: str(None)[:19]
Out[9]: 'None'

3

डेटाटाइम ऑब्जेक्ट के घटकों के साथ सीधे काम करके एक डेटाइम ऑब्जेक्ट को स्ट्रिंग में परिवर्तित करना संभव है।

from datetime import date  

myDate = date.today()    
#print(myDate) would output 2017-05-23 because that is today
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)    
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as
# an integer i change it to a string with str() and it is added to the "5/"   
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string.  Now we have "5/23/2017" as 
# a string. The final line prints the string.

print(dateStr)  

आउटपुट -> 5/23/2017



2

स्ट्रिंग str.joinका निर्माण करने के लिए स्ट्रिंग संघनन, का उपयोग किया जा सकता है।

d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'

1

यदि आप समय चाहते हैं, तो बस साथ चलें

datetime.datetime.now().__str__()

2019-07-11 19:36:31.118766मेरे लिए सांत्वना में प्रिंट

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.