আমার পাইথন datetime.datetime
অবজেক্ট আছে একদিন বিয়োগ করার সর্বোত্তম উপায় কী?
আমার পাইথন datetime.datetime
অবজেক্ট আছে একদিন বিয়োগ করার সর্বোত্তম উপায় কী?
উত্তর:
আপনি একটি টাইমডেল্টা অবজেক্ট ব্যবহার করতে পারেন :
from datetime import datetime, timedelta
d = datetime.today() - timedelta(days=days_to_subtract)
timedelta(minutes=12)
উদাহরণ সহ এটি ব্যবহার করেছি ।
import datetime as DT; DT.datetime.today()
পাইথন 2 এবং 3 উভয় ক্ষেত্রেই এটি সমান DT.datetime.now()
।
আপনার পাইথনের ডেটটাইম অবজেক্টটি যদি সময়-জাগ্রত হয় তবে ডিএসটি ট্রানজিশনের (বা অন্যান্য কারণে ইউটিসি অফসেটে পরিবর্তনগুলি) এড়াতে আপনার ত্রুটি এড়াতে সতর্ক হওয়া উচিত:
from datetime import datetime, timedelta
from tzlocal import get_localzone # pip install tzlocal
DAY = timedelta(1)
local_tz = get_localzone() # get local timezone
now = datetime.now(local_tz) # get timezone-aware datetime object
day_ago = local_tz.normalize(now - DAY) # exactly 24 hours ago, time may differ
naive = now.replace(tzinfo=None) - DAY # same time
yesterday = local_tz.localize(naive, is_dst=None) # but elapsed hours may differ
স্থানীয় সময়কালের জন্য ইউটিসি অফসেটটি গত দিনে পরিবর্তিত হয়ে থাকলে day_ago
এবং সাধারণভাবে yesterday
পৃথক হতে পারে।
উদাহরণস্বরূপ, দিবালোক সংরক্ষণের সময় / গ্রীষ্মের সময় সান 2-নভেম্বর-2014 এ আমেরিকাতে / লস_এঞ্জেলস টাইমজোন এ শেষ হয় তাই যদি:
import pytz # pip install pytz
local_tz = pytz.timezone('America/Los_Angeles')
now = local_tz.localize(datetime(2014, 11, 2, 10), is_dst=None)
# 2014-11-02 10:00:00 PST-0800
তারপরে day_ago
এবং yesterday
পৃথক:
day_ago
ঠিক ২৪ ঘন্টা আগে (তুলনামূলক now
) তবে সকাল ১১ টায়, সকাল দশটায় নয়now
yesterday
গতকাল সকাল 10 টায় তবে এটি 25 ঘন্টা আগে (তুলনামূলক now
) 24 ঘন্টা নয়।pendulum
মডিউল এটি স্বয়ংক্রিয়ভাবে পরিচালনা করে:
>>> import pendulum # $ pip install pendulum
>>> now = pendulum.create(2014, 11, 2, 10, tz='America/Los_Angeles')
>>> day_ago = now.subtract(hours=24) # exactly 24 hours ago
>>> yesterday = now.subtract(days=1) # yesterday at 10 am but it is 25 hours ago
>>> (now - day_ago).in_hours()
24
>>> (now - yesterday).in_hours()
25
>>> now
<Pendulum [2014-11-02T10:00:00-08:00]>
>>> day_ago
<Pendulum [2014-11-01T11:00:00-07:00]>
>>> yesterday
<Pendulum [2014-11-01T10:00:00-07:00]>
কেবলমাত্র একটি বিকল্প পদ্ধতি এবং একটি ব্যবহারের কেসটি যার জন্য এটি সহায়ক তা ব্যাখ্যা করার জন্য:
from datetime import datetime, timedelta print datetime.now() + timedelta(days=-1) # Here, I am adding a negative timedelta
from datetime import datetime, timedelta print datetime.now() + timedelta(days=5, hours=-5)
এটি একইভাবে অন্যান্য পরামিতি যেমন সেকেন্ড, সপ্তাহ ইত্যাদির সাথে ব্যবহার করা যেতে পারে
এছাড়াও আমি অন্য একটি সুন্দর ফাংশনটি ব্যবহার করতে চাই যখন আমি গণনা করতে চাই যখন গত মাসের প্রথম / শেষ দিন বা অন্যান্য আপেক্ষিক টাইমডেল্টাস ইত্যাদি ...
ডেটুটিল ফাংশন থেকে আপেক্ষিক ডেল্টা ফাংশন ( ডেটটাইম লিবের একটি শক্তিশালী এক্সটেনশন)
import datetime as dt
from dateutil.relativedelta import relativedelta
#get first and last day of this and last month)
today = dt.date.today()
first_day_this_month = dt.date(day=1, month=today.month, year=today.year)
last_day_last_month = first_day_this_month - relativedelta(days=1)
print (first_day_this_month, last_day_last_month)
>2015-03-01 2015-02-28