জিরো-প্যাডিং ছাড়াই পাইথনের ডেটটাইম ফর্ম্যাটিং


90

পাইথনের তারিখের সময়গুলি মুদ্রণের জন্য কি এমন বিন্যাস রয়েছে যা তারিখ এবং সময়গুলিতে শূন্য-প্যাডিং ব্যবহার করবে না?

ফর্ম্যাট আমি এখন ব্যবহার করছি:

mydatetime.strftime('%m/%d/%Y %I:%M%p')

ফলাফল: 02/29/2012 05:03 PM
পছন্দসই: 2/29/2012 5:03 PM

কোন ফর্ম্যাট মাসকে '02' এর পরিবর্তে '2' হিসাবে এবং সময়টিকে '05: 03PM 'এর পরিবর্তে' 5:03 PM 'হিসাবে উপস্থাপন করবে?

উত্তর:


77

ফর্ম্যাটিং বিকল্পগুলি datetime.strftime()সমস্ত শূন্য প্যাড সহ উপলব্ধ । আপনি অবশ্যই নিজের ফর্ম্যাটিং ফাংশনের মালিক হতে পারেন, তবে এই ক্ষেত্রে সবচেয়ে সহজ সমাধান হতে পারে ফলাফল পোস্ট-প্রক্রিয়া করার জন্য datetime.strftime():

s = mydatetime.strftime('%m/%d/%Y %I:%M%p').lstrip("0").replace(" 0", " ")

4
সোভেন- কারণ আমি ফেসবুকের মতো দেখতে চাই। ধন্যবাদ!
ইয়ারিন

4
হাতে হাতে সময় লেখার সময় খুব কম লোকই উত্তর আমেরিকায় শূন্য প্যাডযুক্ত ঘন্টা ব্যবহার করে।
এরিক ওয়াকার 0

4
এটি কি এখনও মাসের দিন শূন্য প্যাড হবে না?
বিচারক মেগার্ডেন

4
@ জুজময়েগার্ডেন: সে কারণেই সমাধানটি .lstrip("0")শূণ্য শূন্য থেকে মুক্তি পেতে পারে।
সোভেন মারনাচ 21

4
আমি প্যাড শূন্যগুলি কেন সরাতে চাই? কারণ এটি আরএফসি 2822 দ্বারা ভুল , উদাহরণস্বরূপ পডকাস্ট ফিডে।
ভাইটালি জেডনেভিচ

165

উপরে "সমস্ত বা কিছুই নয়" শীর্ষস্থানীয় শূন্য দিকটি এড়ানোর জন্য অন্য বিকল্পটি ক্ষেত্রের ধরণের সামনে একটি বিয়োগ করা হবে:

mydatetime.strftime('%-m/%d/%Y %-I:%M%p')

তারপরে এটি: '4/10/2015 03:00 AM'

হয়ে: '4/10/2015 3:00 পূর্বাহ্ন'

আপনি চাইলে optionচ্ছিকভাবে দিনের সামনে একটি বিয়োগফল রাখতে পারেন।

সম্পাদনা: মাইনাস বৈশিষ্ট্যটি জিএনইউ সি লাইব্রেরি থেকে প্রাপ্ত হয়েছে ("গ্লিবসি") যেমন "গ্লিবসি নোটস" এর অধীনে লিনাক্স স্ট্রফটাইম ম্যানপেজে উল্লিখিত হয়েছে


48
দুর্দান্ত উত্তর, তবে কেবল লিনাক্স। উইন্ডোজ কাজ করবে না। stackoverflow.com/questions/10807164/...
ExactaBox

4
কেন এই কাজ করে? আমি ডক্সে এই একটি রেফারেন্স খুঁজে পাচ্ছি না date.__format__বা time.strftime, docs.python.org/3/library/... এবং docs.python.org/3.8/library/time.html#time.strftime যথাক্রমে
আমিন শাহ গিলানি

4
@ এমএনশাহ গিলানির পোস্ট এসসিআর রেফারেন্সের সাথে আপডেট হয়েছে
ক্রিসফ্রিমান

93

নতুন স্ট্রিং ফর্ম্যাটিং সিস্টেমটি এর বিকল্প সরবরাহ করে strftime। এটি বেশ পঠনযোগ্য - প্রকৃতপক্ষে, strftimeএই অ্যাকাউন্টে এটি পছন্দনীয় হতে পারে । এটি শূন্যপদ নয় এমনটি উল্লেখ করার দরকার নেই:

>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now())
'3/1/2012'

যেহেতু আপনি সম্ভবত মিনিটের মাঠে শূন্য প্যাডিং চান, আপনি এটি করতে পারেন:

>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now)
'3/1/2012 20:00'

আপনি যদি "সামরিক" সময়ের পরিবর্তে "নিয়মিত" সময় চান তবে আপনি এখনও স্ট্যান্ডার্ড strftimeস্পেসিফায়ার ব্যবহার করতে পারেন । সুবিধামত, আমাদের উদ্দেশ্যে, strftime আছে একটি শূন্য পরিবর্তে একটি ফাঁকা 12 ঘণ্টার সময় প্যাডেড জন্য একটি কোড প্রদান:

'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now)
'4/4/2014  6:00PM'

এটি কিছুটা কম পঠনযোগ্য হয়ে ওঠে, হায়। এবং @ এমসিলসনার পয়েন্ট হিসাবে, strftime1900 এর আগে তারিখের জন্য কয়েকটি (সমস্ত?) প্ল্যাটফর্মে ব্যর্থ হবে।


4
অজগর ২.6 থেকে এটি প্রায় ছিল। (এটা নয় যে নতুন।)
senderle

4
মাসের বানানটি উদাহরণস্বরূপ, আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন: "{0.day} {0:%B %Y}".format(d)যা আপনাকে '2 August 2013'এই মন্তব্যের দিন হিসাবে দেবে :)
জেনস

4
এটি আকর্ষণীয়, তবে এটি আসলে ওপিকে উত্তর দেয় না, কারণ তিনি এএম / প্রধানমন্ত্রী সময় চান। আমি আসলে এটিকে হ্রাস করতে যাচ্ছি না, তবে আপনি যদি পাইথনে "আমেরিকান" তারিখ / সময় বিন্যাস করার চেষ্টা করছেন তবে গ্রহণযোগ্য উত্তরটি সঠিক right
ডানা কার্টরাইট

নোট করুন যে এই কৌশলটি স্ট্রফটাইম ব্যবহার করে, যা ১৯০০ সালের পূর্বের তারিখে ব্যর্থ হবে you
mlissner

4
ফ্যাক! আমি ঠিক বুঝতে পেরেছিলাম যেখানে আমি অন্য কোনও বস্তুর সাথে ডি নির্দেশ করি না, আমি কেবল এটি অবস্থানগত আরগ হিসাবে পাস করেছি।
জ্যাকবআইআরআর

50

গৃহীত উত্তর সঠিক সমাধান নয় (আইএমএইচও) সঠিক নথিভুক্ত পদ্ধতি:

লিনাক্সে "#" "-" দ্বারা প্রতিস্থাপন করা হয়:

% -d,% -H,% -I,% -j,% -m,% -M,% -S,% -U,% -w,% -W,% -y,% -Y

উইন্ডোজে "-" "#" দ্বারা প্রতিস্থাপন করা হয়:

% # ডি,% # এইচ,% # আই,% # জে,% # মি,% # এম,% # এস,% # ইউ,% # ডব্লিউ,% # ডব্লিউ,% # ইয়র্ক,% # ওয়াই

#Linux
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')

# Windows
mydatetime.strftime('%#m/%d/%Y %#I:%M%p')

সূত্র: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx

যেমন সাগনেতা বলেছেন: উইন্ডোজে # হ্যাশ ট্রিক কেবল দেশীয় পাইথন এক্সিকিউটেবলের জন্য উপলব্ধ। এটি সাইগউইন ভিত্তিক পাইথন বাস্তবায়নের জন্য কাজ করবে না।


4
এটা সঠিক। যথাযথ নোট তবে উইন্ডোজটিতে # হ্যাশ ট্রিক কেবল দেশীয় পাইথন এক্সিকিউটেবলের জন্য উপলব্ধ। অন্য কথায়, এটি সাইগউইন-ভিত্তিক অজগর বাস্তবায়নের জন্য কাজ করবে না।
স্নেগতা

4
বাহ এটিকে জানতে পেরে তবে আমি পরিণতিটি দেখে ভীত হই। আমি একটি ডেটাবেস থেকে ফিরে তারিখের ফর্ম্যাটিংটি পরীক্ষা করছি এবং প্রতিটি পরীক্ষার জন্য আমার প্রত্যাশিত বিন্যাসে উত্তীর্ণ হওয়া প্রয়োজন এবং এতে প্রচুর জটিলতা যুক্ত হয়েছে।
কিথ

10

লিনাক্সে ক্রিস ফ্রিম্যানের কাছ থেকে ভাল উত্তর।

উইন্ডোতে, এটি:

mydate.strftime('%#m/%#d/%Y')

ভেবেছিল যে সাহায্য করতে পারে।


0

"% l" (এটি লোয়ার-কেস এল) এক ঘন্টার জন্য কাজ করে ("% I" এর পরিবর্তে)। আমি কেবল এখানে অন্য উত্তর থেকে এটি জানি

পাইথন স্ট্রফটাইম - তারিখের নেতৃত্ব না দিয়ে?

তবে দুর্ভাগ্যক্রমে তাদের কাছে তারিখ / সময়ের অন্যান্য উপাদানগুলির কোড নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.