8.5 KiB
📘 روز ۱۶
datetime پایتون
پایتون ماژول datetime را برای کار با تاریخ و زمان دارد.
import datetime
print(dir(datetime))
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']
با دستورات داخلی dir یا help میتوان توابع موجود در یک ماژول خاص را شناخت. همانطور که میبینید، در ماژول datetime توابع زیادی وجود دارد، اما ما بر روی date، datetime، time و timedelta تمرکز خواهیم کرد. بیایید آنها را یک به یک ببینیم.
دریافت اطلاعات datetime
from datetime import datetime
now = datetime.now()
print(now) # 2021-07-08 07:34:46.549883
day = now.day # 8
month = now.month # 7
year = now.year # 2021
hour = now.hour # 7
minute = now.minute # 38
second = now.second
timestamp = now.timestamp()
print(day, month, year, hour, minute)
print('timestamp', timestamp)
print(f'{day}/{month}/{year}, {hour}:{minute}') # 8/7/2021, 7:38
Timestamp یا Unix timestamp تعداد ثانیههای سپری شده از اول ژانویه ۱۹۷۰ به وقت UTC است.
قالببندی خروجی تاریخ با استفاده از strftime
from datetime import datetime
new_year = datetime(2020, 1, 1)
print(new_year) # 2020-01-01 00:00:00
day = new_year.day
month = new_year.month
year = new_year.year
hour = new_year.hour
minute = new_year.minute
second = new_year.second
print(day, month, year, hour, minute) #1 1 2020 0 0
print(f'{day}/{month}/{year}, {hour}:{minute}') # 1/1/2020, 0:0
قالببندی تاریخ و زمان با استفاده از متد strftime انجام میشود و مستندات آن را میتوانید اینجا پیدا کنید.
from datetime import datetime
# تاریخ و زمان فعلی
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t) # time: 18:21:40
time_one = now.strftime("%m/%d/%Y, %H:%M:%S")
# فرمت mm/dd/YY H:M:S
print("time one:", time_one) # time one: 06/28/2022, 18:21:40
time_two = now.strftime("%d/%m/%Y, %H:%M:%S")
# فرمت dd/mm/YY H:M:S
print("time two:", time_two) # time two: 28/06/2022, 18:21:40
time: 01:05:01
time one: 12/05/2019, 01:05:01
time two: 05/12/2019, 01:05:01
در اینجا تمام نمادهای strftime که برای قالببندی زمان استفاده میکنیم، آورده شده است. مثالی از تمام فرمتهای این ماژول.
تبدیل رشته به زمان با استفاده از strptime
در اینجا مستنداتی وجود دارد که به درک فرمت کمک میکند.
from datetime import datetime
date_string = "5 December, 2019"
print("date_string =", date_string) # date_string = 5 December, 2019
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object) # date_object = 2019-12-05 00:00:00
date_string = 5 December, 2019
date_object = 2019-12-05 00:00:00
استفاده از date از ماژول datetime
from datetime import date
d = date(2020, 1, 1)
print(d) # 2020-01-01
print('Current date:', d.today()) # 2019-12-05
# شیء date از تاریخ امروز
today = date.today()
print("Current year:", today.year) # 2019
print("Current month:", today.month) # 12
print("Current day:", today.day) # 5
اشیاء Time برای نمایش زمان
from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a) # a = 00:00:00
# time(hour, minute and second)
b = time(10, 30, 50)
print("b =", b)
# time(hour, minute and second)
c = time(hour=10, minute=30, second=50)
print("c =", c) # c = 10:30:50
# time(hour, minute, second, microsecond)
d = time(10, 30, 50, 200555)
print("d =", d) # d = 10:30:50.200555
خروجی a = 00:00:00 b = 10:30:50 c = 10:30:50 d = 10:30:50.200555
محاسبه تفاوت بین دو نقطه زمانی با استفاده از
from datetime import date, datetime
today = date(year=2019, month=12, day=5)
new_year = date(year=2020, month=1, day=1)
time_left_for_newyear = new_year - today
# Time left for new year: 27 days, 0:00:00
print('Time left for new year: ', time_left_for_newyear) # Time left for new year: 27 days, 0:00:00
t1 = datetime(year = 2019, month = 12, day = 5, hour = 0, minute = 59, second = 0)
t2 = datetime(year = 2020, month = 1, day = 1, hour = 0, minute = 0, second = 0)
diff = t2 - t1
print('Time left for new year:', diff) # Time left for new year: 26 days, 23: 01: 00
محاسبه تفاوت بین دو نقطه زمانی با استفاده از timedelta
from datetime import timedelta
t1 = timedelta(weeks=12, days=10, hours=4, seconds=20)
t2 = timedelta(days=7, hours=5, minutes=3, seconds=30)
t3 = t1 - t2
print("t3 =", t3)
date_string = 5 December, 2019
date_object = 2019-12-05 00:00:00
t3 = 86 days, 22:56:50
🌕 شما فوقالعاده هستید. شما ۱۶ قدم در مسیر خود به سوی بزرگی پیش رفتهاید. اکنون برای مغز و عضلات خود چند تمرین انجام دهید.
💻 تمرینها: روز ۱۶
۱. روز، ماه، سال، ساعت، دقیقه و timestamp فعلی را از ماژول datetime بگیرید. ۲. تاریخ فعلی را با استفاده از این فرمت قالببندی کنید: "%m/%d/%Y, %H:%M:%S") ۳. امروز ۵ دسامبر ۲۰۱۹ است. این رشته زمانی را به زمان تبدیل کنید. ۴. تفاوت زمانی بین حال و سال نو را محاسبه کنید. ۵. تفاوت زمانی بین ۱ ژانویه ۱۹۷۰ و حال را محاسبه کنید. ۶. فکر کنید، از ماژول datetime برای چه کارهایی میتوانید استفاده کنید؟ مثالها:
- تحلیل سریهای زمانی
- برای گرفتن timestamp از هر فعالیتی در یک برنامه
- افزودن پستها در یک وبلاگ
🎉 تبریک میگویم! 🎉

