जवाबों:
वास्तव में मुझे वही समस्या थी और मुझे एहसास हुआ कि, यदि आप %
और पत्र के बीच एक हाइफ़न जोड़ते हैं, तो आप अग्रणी शून्य को हटा सकते हैं।
उदाहरण के लिए %Y/%-m/%-d
।
यह केवल यूनिक्स (लिनक्स, ओएस एक्स) पर काम करता है, न कि विंडोज (सिगविन सहित)। विंडोज पर, आप उपयोग करेंगे #
, उदा %Y/%#m/%#d
।
ValueError: '-' is a bad directive in format '%b %-d, %Y'
। OSX, पायथन 2.7।
%#d
विंडोज पर ऐसा ही होगा
हम format
python2.6 के बाद से विधि के आगमन के साथ इस तरह की बात कर सकते हैं :
>>> import datetime
>>> '{dt.year}/{dt.month}/{dt.day}'.format(dt = datetime.datetime.now())
'2013/4/19'
हालांकि मूल प्रश्न के दायरे से परे, अधिक दिलचस्प प्रारूपों के लिए, आप इस तरह से सामान कर सकते हैं:
>>> '{dt:%A} {dt:%B} {dt.day}, {dt.year}'.format(dt=datetime.datetime.now())
'Wednesday December 3, 2014'
और python3.6 के रूप में, यह एक इनलाइन स्वरूपित स्ट्रिंग के रूप में व्यक्त किया जा सकता है :
Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dt = datetime.datetime.now()
>>> f'{dt:%A} {dt:%B} {dt.day}, {dt.year}'
'Monday August 29, 2016'
time.strftime('%A %B %d, %Y')
, जैसे कि पैदावार (अब, अंग्रेजी स्थान पर) Tuesday October 07, 2014
।
__format__
हुक निर्दिष्ट करता है जो आपको इस तरह की चीजें लिखने की अनुमति देता है।
'{dt.hour}'
24 घंटे की घड़ी का उपयोग किया जाता है :( दूसरा विकल्प का उपयोग करना अभी भी आपको '{%#I}'
विंडोज और '{%-I}'
यूनिक्स पर उपयोग करने के लिए वापस लाता है ।
कुछ प्लेटफ़ॉर्म http://docs.python.org/library/time.html के%
अनुसार और पत्र के बीच की चौड़ाई और सटीक विनिर्देश (जैसे 'महीने का दिन') का समर्थन कर सकते हैं, लेकिन यह निश्चित रूप से एक गैर-पोर्टेबल है समाधान (जैसे मेरे मैक पर काम नहीं करता; ;-) हो सकता है कि आप उपाय के बाद एक स्ट्रिंग प्रतिस्थापित (या आरई, वास्तव में गंदा प्रारूप के लिए) का उपयोग कर सकते हैं ? उदाहरण के लिए:strftime
>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'
यहाँstrftime()
GNU C लाइब्रेरी द्वारा समर्थित संशोधक का प्रलेखन है । (जैसा कि लोगों ने पहले कहा था, यह पोर्टेबल नहीं हो सकता है।) आपकी रुचि हो सकती है:
%e
इसके बजाय %d
एक स्थान के साथ महीने के दिन में अग्रणी शून्य को प्रतिस्थापित करेगायह मेरे पायथन (लिनक्स पर) पर काम करता है। मुझे नहीं पता कि यह आप पर काम करेगा।
%-d
उपरोक्त की तरह , यह पायथन 2.7.2 के साथ ओएस एक्स 10.8.5 में काम करता है, लेकिन पायथन 2.7.3 के साथ विंडोज 7 प्रो 64-बिट में नहीं।
>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
'5/5/2011'
.replace('X0','X').replace('X','')
? बस करो .replace('X0', '')
और यह अच्छा होगा।
विंडोज पर, '%', जैसे '% # m /% # d /% Y% # I:% M:% R% p' जोड़ते हैं
संदर्भ के लिए: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
पार्टी के लिए काफी देर से लेकिन %-d
मेरे अंत पर काम करता है।
datetime.now().strftime('%B %-d, %Y')
"5 नवंबर 2014" जैसा कुछ पैदा करता है
चीयर्स :)
ValueError: Invalid format string
मेरे विंडोज सिस्टम में।
मुझे लगता है कि Django टेम्पलेट दिनांक स्वरूपण फ़िल्टर त्वरित और आसान है। यह प्रमुख शून्य को बाहर निकालता है। यदि आपको Django मॉड्यूल आयात करने में कोई आपत्ति नहीं है, तो इसे देखें।
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')
import django.conf
django.conf.settings.configure()
-
Bellow पर एक नज़र डालें :
>>> from datetime import datetime
>>> datetime.now().strftime('%d-%b-%Y')
>>> '08-Oct-2011'
>>> datetime.now().strftime('%-d-%b-%Y')
>>> '8-Oct-2011'
>>> today = datetime.date.today()
>>> today.strftime('%d-%b-%Y')
>>> print(today)
बस replace
इस तरह का उपयोग करें:
(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")
यह उत्पादन होगा:
'2017/7/21'
जब %d
आप पूर्णांक का उपयोग करके परिवर्तित कर सकते हैं int()
तो यह स्वतः ही प्रमुख 0 को हटा देगा और पूर्णांक बन जाएगा। तब आप वापस स्ट्रिंग का उपयोग करके परिवर्तित कर सकते हैं str()
।
उदाहरण के लिए, "% -d" एक ही OS के विभिन्न संस्करणों के बीच भी पोर्टेबल नहीं है। एक बेहतर समाधान यह होगा कि दिनांक घटकों को व्यक्तिगत रूप से निकाला जाए, और प्रत्येक घटक के लिए दिनांक विशिष्ट स्वरूपण ऑपरेटरों और तिथि विशेषता पहुंच के बीच चयन करें।
e = datetime.date(2014, 1, 6)
"{date:%A} {date.day} {date:%B}{date.year}".format(date=e)
क्योंकि पायथन वास्तव में strftime(3)
आपके मंच पर केवल सी भाषा फ़ंक्शन को कॉल करता है , यह हो सकता है कि ऐसे प्रारूप वर्ण हैं जिन्हें आप अग्रणी शून्य को नियंत्रित करने के लिए उपयोग कर सकते हैं; कोशिश करो man strftime
और देखो। लेकिन, निश्चित रूप से, परिणाम पोर्टेबल नहीं होगा, क्योंकि पायथन मैनुअल आपको याद दिलाएगा। :-)
मैं एक नई शैली का उपयोग कर की कोशिश करेंगे datetime
जो की तरह गुण होते हैं बजाय वस्तु, t.year
और t.month
और t.day
, और के माध्यम से उन डाल सामान्य, उच्चस्तरीय का स्वरूपण %
ऑपरेटर, जो अग्रणी शून्य के समर्थन नियंत्रण करता है। देखें http://docs.python.org/library/datetime.html जानकारी के लिए। बेहतर अभी तक, "".format()
ऑपरेटर का उपयोग करें यदि आपके पायथन में यह है और इससे भी अधिक आधुनिक हो; इसमें संख्याओं के साथ-साथ बहुत सारे प्रारूप विकल्प भी हैं। देखें: http://docs.python.org/library/string.html#string-formatting ।
एलेक्स के तरीके के आधार पर, यह स्टार्ट-ऑफ-स्ट्रिंग और आफ्टर-स्पेस दोनों मामलों के लिए काम करेगा:
re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")
मुझे यह .format या% -d से बेहतर लगता है क्योंकि यह क्रॉस-प्लेटफ़ॉर्म है और मुझे स्ट्रैफ़ाइम ("नवंबर" और "सोमवार" जैसी चीजें प्राप्त करने के लिए) का उपयोग करने की अनुमति देता है।
पुराना प्रश्न, लेकिन% l (लोअर-केस L) ने मेरे लिए स्ट्रैफ़टाइम में काम किया: यह सभी के लिए काम नहीं कर सकता है, हालाँकि, जैसा कि पायथन डॉक्यूमेंटेशन में मुझे सूचीबद्ध नहीं मिला है