Datetime trong Python

Để xử lý ngày và giờ trong Python ta sử dụng một thư viên có tên datetime được tích hợp sẵn. Trước hết hãy kiểm tra xem trong thư viện này có gì nào!

import datetime
print(dir(datetime))

Kết quả ta được:

['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'date', 'datetime', 'datetime_CAPI', 'sys', 'time', 'timedelta', 'timezone', 'tzinfo']

Với việc sử dụng lệnh dir(), bạn có thể biết các hàm có sẵn trong một mô-đun nhất định. Như bạn thấy, trong mô-đun datetime có rất nhiều hàm, nhưng chúng ta sẽ tập trung vào date, datetime, timetimeelta.

datetime

from datetime import datetime
now = datetime.now()
print(now)                      # 2021-04-23 02:11:47.653202
day = now.day                   # 23
month = now.month               # 4
year = now.year                 # 2021
hour = now.hour                 # 2
minute = now.minute             # 11
second = now.second
timestamp = now.timestamp()
print(day, month, year, hour, minute)
print('timestamp', timestamp)
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 23/4/2021, 2:11

Timestamp hoặc Unix timestamp là số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 theo giờ UTC.

strftime

  • Định dạng date
from datetime import datetime
new_year = datetime(2021, 1, 1)
print(new_year)      # 2021-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 2021 0 0
print(f'{day}/{month}/{year}, {hour}:{minute}')  # 1/1/2021, 0:0
  • Định dạng time
from datetime import datetime
# current date and time
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t) # time: 02:16:37
time_one = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("time one:", time_one) # time one: 04/23/2021, 02:16:37
time_two = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("time two:", time_two) # time two: 23/04/2021, 02:16:37

String đến Time

from datetime import datetime
date_string = "5 December, 2021"
print("date_string =", date_string) # 5 December, 2021
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object) # 2021-12-05 00:00:00

date

  • Lấy ngày hiện tại bằng hàm today()
from datetime import date
d = date(2021, 1, 1)
print(d)
print('Current date:', d.today())    # 2021-01-01

# đối tượng ngày của ngày hôm nay
today = date.today()
print("Current year:", today.year)   # 2021
print("Current month:", today.month) # 4
print("Current day:", today.day)     # 23
  • Sử dụng các đối số trong hàm time()
from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a) # 00:00:00
# time(hour, minute and second)
b = time(10, 30, 50)
print("b =", b) # 10:30:50
# time(hour, minute and second)
c = time(hour=10, minute=30, second=50)
print("c =", c) # 10:30:50
# time(hour, minute, second, microsecond)
d = time(10, 30, 50, 200555)
print("d =", d) # 10:30:50.200555
  • Sự khác nhau giữa hai thời điểm
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
# Time left for new year: 26 days, 23: 01: 00
print('Time left for new year:', diff) 
  • Sự khác nhau giữa hai thời điểm khi sử dụng 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) # t3 = 86 days, 22:56:50

Bài tập

  1. Lấy ngày, tháng, năm, giờ, phút và gian hiện tại từ mô-đun datetime.
  2. Định dạng ngày hiện tại bằng định dạng này: "% m /% d /% Y,% H:% M:% S"
  3. Hôm nay là 5 December, 2021. Thay đổi chuỗi này thành thời gian.
  4. Tính chênh lệch múi giờ giữa bây giờ và năm mới.
  5. Tính chênh lệch thời gian giữa 1 January 1970 và bây giờ.
  6. Hãy nghĩ xem, bạn có thể sử dụng mô-đun datetime để làm gì? Ví dụ: Phân tích chuỗi thời gian? Để lấy móc thời gian bất kỳ của hoạt động nào trong ứng dụng? Thêm thời gian vào bài đăng trên blog?

Đăng ký nhận bản tin!

Tôi sẽ gửi một email cho bạn khi tôi tạo ra một cái gì đó mới. Tôi sẽ không bao giờ gửi thư rác cho bạn 🙅‍♂️! và bạn có thể hủy đăng ký bất kỳ lúc nào.