উত্তর:
আসলে আমারও একই সমস্যা ছিল এবং আমি বুঝতে পেরেছিলাম, আপনি যদি %
এবং চিঠির মধ্যে হাইফেন যুক্ত করেন তবে আপনি অগ্রণী শূন্যটি সরাতে পারবেন।
উদাহরণস্বরূপ %Y/%-m/%-d
।
এটি কেবল উইন্ডোজ নয় (সিকউইন সহ) ইউনিক্সে (লিনাক্স, ওএস এক্স) কাজ করে। উইন্ডোজে আপনি #
যেমন ব্যবহার করবেন %Y/%#m/%#d
।
ValueError: '-' is a bad directive in format '%b %-d, %Y'
। ওএসএক্স, পাইথন ২.7।
%#d
উইন্ডোজেও একই কাজ করবে
format
পাইথন 2.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'
এবং পাইথন ৩. of হিসাবে এটি একটি ইনলাইন ফর্ম্যাট স্ট্রিং হিসাবে প্রকাশ করা যেতে পারে :
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()
জিএনইউ সি লাইব্রেরিতে সমর্থিত সংশোধনকারীদের ডকুমেন্টেশন এখানে রয়েছে । (লোকেরা যেমন আগে বলেছিল, এটি পোর্টেবল নাও হতে পারে)) আপনার আগ্রহের বিষয় হতে পারে:
%e
পরিবর্তে %d
মাসের দিনে শূন্যস্থানটি স্থানের সাথে প্রতিস্থাপন করবেএটি আমার পাইথনে (লিনাক্সে) কাজ করে। আমি জানি না এটি আপনার কাজ করবে কিনা।
>>> 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', '')
এবং এটি ভাল হবে।
উইন্ডোজে, '% # মি /% # ডি /% ওয়াই% # আই:% এম:% এস% পি' এর মতো একটি '#' যুক্ত করুন
রেফারেন্সের জন্য: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
পার্টিতে বেশ দেরি হলেও %-d
আমার শেষের দিকে কাজ করে।
datetime.now().strftime('%B %-d, %Y')
"নভেম্বর 5, 2014" এর মতো কিছু উত্পাদন করে
চিয়ার্স :)
ValueError: Invalid format string
আমার উইন্ডোজ সিস্টেমে
আমি জাজানো টেমপ্লেট তারিখের ফর্ম্যাটিং ফিল্টারটি দ্রুত এবং সহজ হিসাবে খুঁজে পেয়েছি। এটি নেতৃস্থানীয় শূন্যগুলি সরিয়ে দেয়। জ্যাঙ্গো মডিউলটি আমদানি করতে আপনার যদি আপত্তি না থাকে তবে এটি পরীক্ষা করে দেখুন।
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()
নীচে তাকান -
:
>>> 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" ব্যবহার করা একই ওএসের বিভিন্ন সংস্করণের মধ্যে পোর্টেবলও নয়। আরও ভাল সমাধান হ'ল পৃথকভাবে তারিখের উপাদানগুলি আহরণ করা এবং প্রতিটি উপাদানটির জন্য নির্দিষ্ট নির্দিষ্ট ফর্ম্যাটিং অপারেটর এবং তারিখের বৈশিষ্ট্য অ্যাক্সেসের মধ্যে বেছে নেওয়া।
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- formattting ।
অ্যালেক্সের পদ্ধতির ভিত্তিতে, এটি স্ট্রিং অফ স্ট্রিং এবং স্পেস-পরবর্তী উভয় ক্ষেত্রেই কাজ করবে:
re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")
আমি এটি ফর্ম্যাট বা% -d এর চেয়ে বেশি পছন্দ করি কারণ এটি ক্রস প্ল্যাটফর্ম এবং আমাকে স্ট্রফটাইম ব্যবহার চালিয়ে যেতে দেয় ("নভেম্বর" এবং "সোমবার" এর মতো জিনিসগুলি পেতে)।
পুরানো প্রশ্ন, কিন্তু% l (লোয়ার কেস এল) আমার জন্য স্ট্রফটাইমে কাজ করেছিল: এটি সবার পক্ষে কাজ নাও করতে পারে, যদিও পাইথন ডকুমেন্টেশনে এটি পাওয়া যায় নি