اندازه گیری اختلافات زمانی

  • مدرس: علی بیگدلی
  • تاریخ انتشار: 1402/05/04
  • تعداد بازدید: 163

اندازه گیری فاصله زمانی با اشیا Timedelta

غالباً ، ممکن است بخواهیم یک بازه زمانی یا یک مدت زمان را با استفاده از زمان پایتون اندازه گیری کنیم. ما می توانیم این کار را با کلاس timedelta داخلی آن انجام دهیم. یک شی timedelta مقدار زمان بین دو تاریخ یا زمان را نشان می دهد. ما می توانیم از این برای اندازه گیری بازه زمانی استفاده کنیم ، یا تاریخ ها یا زمان ها را با اضافه کردن و کم کردن آنها و غیره دستکاری کنیم.

به طور پیش فرض یک شی timedelta تمام پارامترها را روی صفر تنظیم می کند. بیایید یک شی جدید timedelta ایجاد کنیم که دو هفته طول بکشد و ببینیم که چگونه به نظر می رسد:

#import datetime
from datetime import timedelta
# create timedelta object with difference of 2 weeks
d = timedelta(weeks=2)

print(d)
print(type(d))
print(d.days)

خروجی:

14 days, 0:00:00 <class 'datetime.timedelta'> 14

توجه داشته باشید که ما می توانیم مدت زمان خود را در روز با استفاده از ویژگی کلاس timedelta .days بدست آوریم. 

نمونه زیر مدت زمان یک سال را به شما نشان می دهد:

year = timedelta(days=365)
print(year)

خروجی:

365 days, 0:00:00

اکنون بیایید شروع به استفاده از اشیا timedelta همراه با اشیا تاریخ داده برای انجام برخی از ریاضیات کنیم! به طور خاص ، بیایید چند مدت زمان متفاوت را به زمان و تاریخ فعلی اضافه کنیم تا ببینیم چه تاریخی بعد از 15 روز ، چه تاریخی بعد از دو هفته در پیش خواهد بود.

برای این کار می توانیم از عملگرهای + یا - برای اضافه یا کم کردن شی object timedelta به / از یک شی dat datetime استفاده کنیم. نتیجه این خواهد بود که شی dat datetime به اضافه یا منهای مدت زمان مشخص شده در شی timedelta ما خواهد بود.

(توجه: در کد زیر 25 اکتبر ساعت 11:12 صبح است ؛ نتایج شما بسته به زمان اجرای کد متفاوت خواهد بود زیرا ما با استفاده از تابع .now () شی datatime خود را دریافت می کنیم).

#import datetime
from datetime import datetime, timedelta
# get current time
now = datetime.now()
print ("Today's date: ", str(now))

#add 15 days to current date
future_date_after_15days = now + timedelta(days = 15)
print('Date after 15 days: ', future_date_after_15days)

#subtract 2 weeks from current date
two_weeks_ago = now - timedelta(weeks = 2)
print('Date two weeks ago: ', two_weeks_ago)
print('two_weeks_ago object type: ', type(two_weeks_ago))

خروجی:

Today's date:  2019-10-25 11:12:24.863308 Date after 15 days:  2019-11-09 11:12:24.863308 Date two weeks ago:  2019-10-11 11:12:24.863308 two_weeks_ago object type:  <class 'datetime.datetime'>

توجه داشته باشید که خروجی این عملیات ریاضی هنوز هم یک شی زمان است.

تفاوت بین دو تاریخ و زمان را پیدا کنید

مشابه کاری که در بالا انجام دادیم ، می توانیم یک تاریخ را از تاریخ دیگری کم کنیم تا با استفاده از datetime فاصله زمانی بین آنها را پیدا کنیم.

از آنجا که نتیجه این ریاضیات یک مدت زمان است ، شئ که وقتی یک تاریخ را از تاریخ دیگر کم کنیم تولید می شود یک شئ timedelta خواهد بود.

در اینجا ، ما دو شی تاریخ ایجاد خواهیم کرد (به یاد داشته باشید ، اینها همان زمان کار هستند ، فقط شامل داده های زمانی نیستند) و یکی را از دیگری کم می کنیم تا مدت زمان را پیدا کنیم:

# import datetime
from datetime import date
# Create two dates
date1 = date(2008, 8, 18)
date2 = date(2008, 8, 10)

# Difference between two dates
delta = date2 - date1
print("Difference: ", delta.days)
print('delta object type: ', type(delta))

خروجی:

Difference:  -8 delta object type:  <class 'datetime.timedelta'>

در بالا ، ما فقط برای شفافیت از تاریخ استفاده می کنیم ، اما می توانیم با اشیا datetime نیز همین کار را انجام دهیم تا اندازه گیری دقیق تری داشته باشیم که شامل ساعت ها ، دقیقه ها و ثانیه ها نیز باشد:

# import datetime
from datetime import datetime
# create two dates with year, month, day, hour, minute, and second
date1 = datetime(2017, 6, 21, 18, 25, 30)
date2 = datetime(2017, 5, 16, 8, 21, 10)

# Difference between two dates
diff = date1-date2
print("Difference: ", diff)

خروجی:

Difference:  36 days, 10:04:20