আগামীকালের তারিখ পাওয়ার জন্য সবচেয়ে পরিষ্কার ও সর্বাধিক পাইথোনিক উপায় কী? দিনের সাথে একটি যুক্ত করা, মাসের শেষে দিনগুলি হ্যান্ডেল করা ইত্যাদির চেয়ে আরও ভাল উপায় থাকতে হবে
আগামীকালের তারিখ পাওয়ার জন্য সবচেয়ে পরিষ্কার ও সর্বাধিক পাইথোনিক উপায় কী? দিনের সাথে একটি যুক্ত করা, মাসের শেষে দিনগুলি হ্যান্ডেল করা ইত্যাদির চেয়ে আরও ভাল উপায় থাকতে হবে
উত্তর:
datetime.date.today() + datetime.timedelta(days=1)
কৌতুক করা উচিত
timedelta
দিন, সেকেন্ড, মাইক্রোসেকেন্ড, মিলিসেকেন্ড, মিনিট, ঘন্টা, বা সপ্তাহ যোগ করে পরিচালনা করতে পারে।
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2009, 10, 1)
>>> today + datetime.timedelta(days=1)
datetime.date(2009, 10, 2)
>>> datetime.date(2009,10,31) + datetime.timedelta(hours=24)
datetime.date(2009, 11, 1)
একটি মন্তব্যে জিজ্ঞাসা করা হিসাবে, লাফ দিন কোনও সমস্যা হয় না:
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=1)
datetime.date(2004, 2, 29)
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=2)
datetime.date(2004, 3, 1)
>>> datetime.date(2005, 2, 28) + datetime.timedelta(days=1)
datetime.date(2005, 3, 1)
এর কোনো হ্যান্ডলিং লিপ সেকন্ড হউক না কেন:
>>> from datetime import datetime, timedelta
>>> dt = datetime(2008,12,31,23,59,59)
>>> str(dt)
'2008-12-31 23:59:59'
>>> # leap second was added at the end of 2008,
>>> # adding one second should create a datetime
>>> # of '2008-12-31 23:59:60'
>>> str(dt+timedelta(0,1))
'2009-01-01 00:00:00'
>>> str(dt+timedelta(0,2))
'2009-01-01 00:00:01'
অভিশাপ।
সম্পাদনা - @ মার্ক: দস্তাবেজগুলি "হ্যাঁ" বলে, তবে কোডটি "এত বেশি না" বলে:
>>> time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")
(2008, 12, 31, 23, 59, 60, 2, 366, -1)
>>> time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
1230789600.0
>>> time.gmtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 6, 0, 0, 3, 1, 0)
>>> time.localtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 0, 0, 0, 3, 1, 0)
আমি ভাবব যে জিএমটাইম বা লোকালটাইম এমকেটাইম দ্বারা ফিরে আসা মানটি গ্রহণ করবে এবং সেকেন্ডের সংখ্যা হিসাবে 60 দিয়ে আমাকে মূল টুপলটি ফিরিয়ে দেবে। এবং এই পরীক্ষাটি দেখায় যে এই লিপ সেকেন্ডগুলি কেবল ম্লান হতে পারে ...
>>> a = time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
>>> b = time.mktime(time.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S"))
>>> a,b
(1230789600.0, 1230789600.0)
>>> b-a
0.0
এমনকি বেসিক time
মডিউলটি এটি পরিচালনা করতে পারে:
import time
time.localtime(time.time() + 24*3600)
time.strftime
লিপ সেকেন্ড পরিচালনা করে: নোট 2: ডকস.পিথন.আর.লিবারি / টাইম.এইচটিএমএলটাইম.এসটিফটাইম এবং নোট 3: ডকস.পিথন.আর.লাইবারি