30-Days-Of-Python/Persain/16_python_datetime.md

8.2 KiB
Raw Blame History

۳۰ روز پایتون: روز ۱۶ - تاریخ و زمان در پایتون

Twitter Follow

نویسنده: Asabeneh Yetayeh
ویرایش دوم: جولای، ۲۰۲۱

>> روز ۱۷ | << روز ۱۵

30DaysOfPython

📘 روز ۱۶

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_one = now.strftime("%m/%d/%Y, %H:%M:%S")
# فرمت mm/dd/YY H:M:S
print("time one:", time_one)
time_two = now.strftime("%d/%m/%Y, %H:%M:%S")
# فرمت dd/mm/YY H:M:S
print("time two:", time_two)
time: 01:05:01
time one: 12/05/2019, 01:05:01
time two: 05/12/2019, 01:05:01

در اینجا تمام نمادهای strftime که برای قالب‌بندی زمان استفاده می‌کنیم، آورده شده است. مثالی از تمام فرمت‌های این ماژول.

strftime

تبدیل رشته به زمان با استفاده از strptime

در اینجا مستنداتی وجود دارد که به درک فرمت کمک می‌کند.

from datetime import datetime
date_string = "5 December, 2019"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
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)
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)
# 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)
# time(hour, minute, second, microsecond)
d = time(10, 30, 50, 200555)
print("d =", d)

خروجی a = 00:00:00 b = 10:30:50 c = 10:30:50 d = 10:30:50.200555

محاسبه تفاوت بین دو نقطه زمانی با استفاده از

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)

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 از هر فعالیتی در یک برنامه
  • افزودن پست‌ها در یک وبلاگ

🎉 تبریک می‌گویم! 🎉

>> روز ۱۷ | << روز ۱۵