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


277

পাইথন ব্যবহার strftimeকরার সময়, 10 ম এর আগে যদি তারিখের প্রথম 0 টি অপসারণের উপায় থাকে, যেমন। সুতরাং01 তো 1? তার %জন্য কোনও জিনিস খুঁজে পাচ্ছেন না ?

ধন্যবাদ!

উত্তর:


567

আসলে আমারও একই সমস্যা ছিল এবং আমি বুঝতে পেরেছিলাম, আপনি যদি %এবং চিঠির মধ্যে হাইফেন যুক্ত করেন তবে আপনি অগ্রণী শূন্যটি সরাতে পারবেন।

উদাহরণস্বরূপ %Y/%-m/%-d

এটি কেবল উইন্ডোজ নয় (সিকউইন সহ) ইউনিক্সে (লিনাক্স, ওএস এক্স) কাজ করে। উইন্ডোজে আপনি #যেমন ব্যবহার করবেন %Y/%#m/%#d


11
এমনকি আমার জন্যও কাজ করে না, একটি মান দেয় (উইন্ডোজ, পাইথন ২.6)
রকেটমনকিগুলি

14
এটি ওএস এক্সে আমার জন্য কাজ করেছে, তবে আমি পাইথন.আর.জি. থেকে পাইথন ২.7.২ ব্যবহার করছি।
টিম সোয়াস্ট

13
> - @moose আমি এই :-) এখানে উত্তর নিয়ে প্রশ্ন করেছে stackoverflow.com/questions/28894172/...
ম্যাথিয়াস

10
আমি পেতে ValueError: '-' is a bad directive in format '%b %-d, %Y'। ওএসএক্স, পাইথন ২.7।
রিচার্ড

8
%#dউইন্ডোজেও একই কাজ করবে
ডাল

190

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'

2
খুব সুন্দর! দুর্ভাগ্যক্রমে আপনি একা কাজ করেন না যদি আপনি পাঠ্য উপস্থাপনার মতো ব্যবহার করতে চান time.strftime('%A %B %d, %Y'), যা ফল দেয় (এখন, ইংরেজি লোকালে) Tuesday October 07, 2014
পেক্কা ক্লার্ক

@ পেক্কা ক্লার্ক - কিছু কারণ আমি এখনও পর্যন্ত আপনার মন্তব্য লক্ষ্য করি নি। দেখা যাচ্ছে যে ডেটটাইম একটি খুব আকর্ষণীয় __format__হুক নির্দিষ্ট করে যা আপনাকে সেই জাতীয় জিনিস লিখতে দেয়।
মিগিলসন

2
একটি সমস্যা হ'ল '{dt.hour}'24 ঘন্টা ঘড়ি ব্যবহার করে :( দ্বিতীয় বিকল্পটি ব্যবহার '{%#I}'করা আপনাকে উইন্ডোজ এবং '{%-I}'ইউনিক্সে ব্যবহার করতে আবার ফিরে আসে
ubomb

ভাল যুক্তি. আমি কোডে কখনই 12 ঘন্টা ঘড়ির উপস্থাপনা ব্যবহার করি না, তাই আমি সেই ক্ষেত্রেটি ভাবিনি।
মিগিলসন

: আমি বিন্যাস কার্যকারিতা এই অতিরিক্ত ডকুমেন্টেশন দিকে তাকিয়ে করার সুপারিশ করছি pyformat.info
মার্ক

37

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'

@ গুণাইসুস আপনার অর্থ কি? এটি '1 জানুয়ারী 2000 "
ব্যবহারকারী

6
@ ব্যবহারকারী উপরের কোডটি 0 এর আগে একটি ফাঁকা জায়গার জন্য যাচাই করে যা "01 জানুয়ারী 2000" উপস্থিত না থাকলে।
আলাগাপ্পান রামু

@ অ্যালেক্স দয়া করে এই উত্তরটি মুছুন, আপনি সম্ভবত জানেন যে এটি সঠিক উত্তর থেকে অনেক দূরে।
CONvid19

29

strftime()জিএনইউ সি লাইব্রেরিতে সমর্থিত সংশোধনকারীদের ডকুমেন্টেশন এখানে রয়েছে । (লোকেরা যেমন আগে বলেছিল, এটি পোর্টেবল নাও হতে পারে)) আপনার আগ্রহের বিষয় হতে পারে:

  • %eপরিবর্তে %dমাসের দিনে শূন্যস্থানটি স্থানের সাথে প্রতিস্থাপন করবে

এটি আমার পাইথনে (লিনাক্সে) কাজ করে। আমি জানি না এটি আপনার কাজ করবে কিনা।


3
% e আমার জন্য উইন্ডোজ ডাব্লু / পাইথন ২.6 এ ব্যর্থ। আমি অনুমান করছি এটি * নিক্স নির্দিষ্ট। খুব খারাপ :(
রকেটমনকিগুলি

1
এটি একটি * নিক্স সিস্টেমে অন্তত পরিষ্কার, সবচেয়ে সাধারণ, সমাধান ---। এটি ওএস এক্সে কাজ করে
বিএফটিএম

%-d উপরের মত, এটি পাইথন 2.7.2 এর সাথে ওএস এক্স 10.8.5 এ কাজ করে তবে উইন্ডোজ 7 প্রো 64-বিটে পাইথন 2.7.3 এর সাথে নয়।
জোহান

1
এটি আমার জন্য উইন্ডোজ 7 এসপি 1 তে পাইথন 3.5.1 এর সাথে কাজ করেছিল।
নীল বিলিংহাম

1
এটি শীর্ষস্থানীয় শূন্যের পরিবর্তে একটি অতিরিক্ত স্থান প্রবর্তন করেছিল তাই আপনি যদি কোনও সঠিক মিল খুঁজছেন তবে এটি এটি নাও হতে পারে। >>> ওয়ান = ডেটটাইম.ডেটটাইম (2019, 5, 1, 23, 28, 48, 175214) >>> এক.স্ট্রিটাইম ('% বি% ই% এইচ') 'মে 1 23' >>> এগারো = তারিখের সময় .তম তারিখ (2019, 5, 11, 23, 28, 48, 175214) >>> এগারো.স্ট্রি.টাইম ('% বি% ই% এইচ')
'11

28
>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
'5/5/2011'

1
এটি 01 জানুয়ারী 2000 কাজ করে, অ্যালেক্স কাজ করে না।
guneysus

কি করার মানে .replace('X0','X').replace('X','')? শুধু কর .replace('X0', '')এবং এটি ভাল হবে।
মার্কো বোনেলি

2
@ মার্কোবোনেলি: "X12 / X12 / 14" স্ট্রিংয়ে আপনার পরামর্শটি চেষ্টা করুন এবং আপনি দেখতে পাবেন।
gdw2

1
এটি হ্যাক, তবে এটি একটি অজগরিক হ্যাক।
জোশ এম


18

পার্টিতে বেশ দেরি হলেও %-dআমার শেষের দিকে কাজ করে।

datetime.now().strftime('%B %-d, %Y')"নভেম্বর 5, 2014" এর মতো কিছু উত্পাদন করে

চিয়ার্স :)


1
শীর্ষস্থানীয় উত্তর নকল? stackoverflow.com/a/2073189/389812
gdw2

2
ValueError: Invalid format stringআমার উইন্ডোজ সিস্টেমে
ডেকিং

10

আমি জাজানো টেমপ্লেট তারিখের ফর্ম্যাটিং ফিল্টারটি দ্রুত এবং সহজ হিসাবে খুঁজে পেয়েছি। এটি নেতৃস্থানীয় শূন্যগুলি সরিয়ে দেয়। জ্যাঙ্গো মডিউলটি আমদানি করতে আপনার যদি আপত্তি না থাকে তবে এটি পরীক্ষা করে দেখুন।

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()
জ্যাঙ্গোতে

8

নীচে তাকান -:

>>> 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)

অজগর 3 এ পুরোপুরি কাজ করে
সৌরভ

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। যা জিজ্ঞাসা করা হয়েছে, তা অত্যন্ত সাধারণ এবং মনে রাখা সহজ Does দস্তাবেজগুলির মাধ্যমে দ্রুত ব্রাউজ করা আমি এই তথ্যটি খুঁজে পাইনি।
লুকাস লিমা

1
"এটি গ্রহণযোগ্য উত্তর হওয়া উচিত"। না এটি করা উচিত নয়, কারণ এটি কেবল লিনাক্সে কাজ করে।
ব্যবহারকারী 136036


3

আপনি %dযদি ব্যবহার করে পূর্ণসংখ্যায় রূপান্তর করতে পারেন int()তবে এটি স্বয়ংক্রিয়ভাবে শীর্ষস্থানীয় 0 সরিয়ে এবং পূর্ণসংখ্যায় পরিণত হবে। এরপরে আপনি আবার স্ট্রিং ব্যবহার করে রূপান্তর করতে পারেন str()


2
ওআর প্রশ্নটি স্ট্রফটাইমে একটি কলটিতে ফর্ম্যাট স্পেসিফায়ার ব্যবহার করে সমাধানের জন্য ছিল, তার চেয়ে নিজের সমাধানের সাথে স্ট্র () যুক্ত
ডেভ হুপার

দুর্দান্ত উত্তর, ডেভ হুপার শুনবেন না
তোসকান

3

উদাহরণস্বরূপ, "% -d" ব্যবহার করা একই ওএসের বিভিন্ন সংস্করণের মধ্যে পোর্টেবলও নয়। আরও ভাল সমাধান হ'ল পৃথকভাবে তারিখের উপাদানগুলি আহরণ করা এবং প্রতিটি উপাদানটির জন্য নির্দিষ্ট নির্দিষ্ট ফর্ম্যাটিং অপারেটর এবং তারিখের বৈশিষ্ট্য অ্যাক্সেসের মধ্যে বেছে নেওয়া।

e = datetime.date(2014, 1, 6)
"{date:%A} {date.day} {date:%B}{date.year}".format(date=e)

2

পাইথন সত্যিই কেবল 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


2

অ্যালেক্সের পদ্ধতির ভিত্তিতে, এটি স্ট্রিং অফ স্ট্রিং এবং স্পেস-পরবর্তী উভয় ক্ষেত্রেই কাজ করবে:

re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")

আমি এটি ফর্ম্যাট বা% -d এর চেয়ে বেশি পছন্দ করি কারণ এটি ক্রস প্ল্যাটফর্ম এবং আমাকে স্ট্রফটাইম ব্যবহার চালিয়ে যেতে দেয় ("নভেম্বর" এবং "সোমবার" এর মতো জিনিসগুলি পেতে)।


1

পুরানো প্রশ্ন, কিন্তু% l (লোয়ার কেস এল) আমার জন্য স্ট্রফটাইমে কাজ করেছিল: এটি সবার পক্ষে কাজ নাও করতে পারে, যদিও পাইথন ডকুমেন্টেশনে এটি পাওয়া যায় নি


1
import datetime
now = datetime.datetime.now()
print now.strftime("%b %_d")

এটি শীর্ষস্থানীয় শূন্যকে একটি স্থানের সাথে প্রতিস্থাপন করে, যা ওপি চেয়েছিল তা নয়
ডেভ হুপার

ValueError: '_' is a bad directive in format '%a %b %_d %H:%M:%S %Y'অজগর 3.5 ব্যবহার করে
জি-রুহ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.