কেন: তারিখগুলি বস্তু
পাইথনে, তারিখগুলি অবজেক্ট are অতএব, আপনি যখন এগুলি পরিচালনা করেন, আপনি স্ট্রাইক নয়, টাইমস্ট্যাম্প বা কোনও কিছু নয় objects
পাইথনের যে কোনও বস্তুর TWO স্ট্রিং প্রতিনিধিত্ব রয়েছে:
"মুদ্রণ" দ্বারা ব্যবহৃত নিয়মিত উপস্থাপনাটি str()
ফাংশনটি ব্যবহার করতে পারা যায় । এটি বেশিরভাগ সময় সর্বাধিক সাধারণ মানব পাঠযোগ্য ফর্ম্যাট এবং এটি প্রদর্শন সহজ করতে ব্যবহৃত হয়। তাই str(datetime.datetime(2008, 11, 22, 19, 53, 42))
আপনাকে দেয় '2008-11-22 19:53:42'
।
বিকল্প প্রতিনিধিত্ব যা অবজেক্টের প্রকৃতির প্রতিনিধিত্ব করতে ব্যবহৃত হয় (ডেটা হিসাবে)। এটি repr()
ফাংশনটি ব্যবহার করা যেতে পারে এবং আপনি যখন ডেভেলপ করছেন বা ডিবাগিং করছেন তখন আপনার কী ধরণের ডেটা ম্যানিপুলেট করছে তা জানতে সুবিধাজনক। repr(datetime.datetime(2008, 11, 22, 19, 53, 42))
আপনি দেয় 'datetime.datetime(2008, 11, 22, 19, 53, 42)'
।
যা ঘটেছিল তা হল আপনি যখন "মুদ্রণ" ব্যবহার করে তারিখটি মুদ্রণ করেছিলেন, এটি ব্যবহার করা হয়েছিল str()
যাতে আপনি একটি সুন্দর তারিখের স্ট্রিং দেখতে পান। তবে আপনি যখন মুদ্রণ করেছেন mylist
, আপনি বস্তুর একটি তালিকা মুদ্রণ করেছেন এবং পাইথন ব্যবহার করে ডেটার সেটটি উপস্থাপন করার চেষ্টা করেছিলেন repr()
।
কীভাবে: আপনি এটি দিয়ে কী করতে চান?
ঠিক আছে, আপনি যখন তারিখগুলি পরিচালনা করেন তখন পুরো তারিখের তারিখগুলি ব্যবহার করতে থাকুন। তারা হাজার হাজার দরকারী পদ্ধতি পেয়েছে এবং পাইথন এপিআইয়ের বেশিরভাগই তারিখগুলি অবজেক্ট হওয়ার প্রত্যাশা করে।
আপনি এগুলি প্রদর্শন করতে চাইলে কেবল ব্যবহার করুন str()
। পাইথনে, ভাল অনুশীলন হ'ল সুস্পষ্টভাবে সমস্ত কিছু castালাই। সুতরাং যখন মুদ্রণের সময় ঠিক তখনই আপনার তারিখটি ব্যবহার করে স্ট্রিং উপস্থাপনা পান str(date)
।
ত্য জ্যজ্জকিজ. আপনি যখন তারিখগুলি মুদ্রণের চেষ্টা করেছিলেন, আপনি মুদ্রণ করেছেন mylist
। আপনি যদি কোনও তারিখ মুদ্রণ করতে চান তবে আপনাকে অবশ্যই তারিখের বিষয়গুলি মুদ্রণ করতে হবে, তাদের ধারক (তালিকা) নয়।
EG, আপনি একটি তালিকায় সমস্ত তারিখ মুদ্রণ করতে চান:
for date in mylist :
print str(date)
উল্লেখ্য যে নির্দিষ্ট ক্ষেত্রে , আপনি এমনকি বাদ দিতে পারেন str()
কারণ মুদ্রণটি এটি আপনার জন্য ব্যবহার করবে। তবে এটি অভ্যাসে পরিণত হওয়া উচিত নয় :-)
ব্যবহারিক ক্ষেত্রে, আপনার কোড ব্যবহার করে
import datetime
mylist = []
today = datetime.date.today()
mylist.append(today)
print mylist[0] # print the date object, not the container ;-)
2008-11-22
# It's better to always use str() because :
print "This is a new day : ", mylist[0] # will work
>>> This is a new day : 2008-11-22
print "This is a new day : " + mylist[0] # will crash
>>> cannot concatenate 'str' and 'datetime.date' objects
print "This is a new day : " + str(mylist[0])
>>> This is a new day : 2008-11-22
উন্নত তারিখ বিন্যাস
তারিখগুলির একটি ডিফল্ট উপস্থাপনা থাকে তবে আপনি সেগুলি নির্দিষ্ট ফর্ম্যাটে মুদ্রণ করতে চাইতে পারেন। সেক্ষেত্রে আপনি strftime()
পদ্ধতিটি ব্যবহার করে একটি কাস্টম স্ট্রিং উপস্থাপনা পেতে পারেন ।
strftime()
আপনি কীভাবে আপনার তারিখটি ফর্ম্যাট করতে চান তা বোঝানোর একটি স্ট্রিং প্যাটার্ন প্রত্যাশা করে।
ইজি:
print today.strftime('We are the %d, %b %Y')
>>> 'We are the 22, Nov 2008'
সমস্ত অক্ষরের পরে কোনও কিছুর "%"
জন্য একটি বিন্যাস উপস্থাপন করে:
%d
দিন সংখ্যা
%m
মাসের নম্বর
%b
মাস সংক্ষিপ্তকরণ হয়
%y
বছরটি শেষ দুই অঙ্ক
%Y
সারা বছর হয়
ইত্যাদি
অফিসিয়াল ডকুমেন্টেশনগুলি দেখুন বা ম্যাককুটেনের দ্রুত রেফারেন্স আপনি সেগুলি সবই জানেন না।
PEP3101 সাল থেকে , প্রতিটি বস্তুর নিজস্ব স্ট্রিমের যে কোনও স্ট্রিংয়ের পদ্ধতি বিন্যাস দ্বারা স্বয়ংক্রিয়ভাবে ব্যবহার করা যেতে পারে। ডেটটাইমের ক্ষেত্রে, ফরম্যাটটি স্ট্রফটাইমে একই ব্যবহৃত হয়। সুতরাং আপনি উপরের মত একই কাজ করতে পারেন:
print "We are the {:%d, %b %Y}".format(today)
>>> 'We are the 22, Nov 2008'
এই ফর্মটির সুবিধা হ'ল আপনি একই সাথে অন্যান্য বস্তুকেও রূপান্তর করতে পারেন। ফর্ম্যাট স্ট্রিং আক্ষরিক
পরিচয় দিয়ে (পাইথন ৩.6, ২০১-12-১২-২৩) এটি এ হিসাবে লেখা যেতে পারে
import datetime
f"{datetime.datetime.now():%Y-%m-%d}"
>>> '2017-06-15'
স্থানীয়করণ
আপনি যদি সঠিকভাবে সেগুলি ব্যবহার করেন তবে তারিখগুলি স্থানীয় ভাষা এবং সংস্কৃতিতে স্বয়ংক্রিয়ভাবে মানিয়ে নিতে পারে তবে এটি কিছুটা জটিল। হয়তো এসও (স্ট্যাক ওভারফ্লো) এর অন্য প্রশ্নের জন্য ;-)
str()
(তালিকার প্রতিটি উপাদানকে), কারণ এটি হ'লprint
স্পষ্টভাবে আপনার এককtoday
বস্তুটির জন্য।