Datetime trong Python

Datetime trong Python

Phan Nhật Chánh

Chánh20 tháng 04, 2021

5 min read
·
views
·
likes

Datetime là một module trong Python cung cấp các lớp và hàm để làm việc với các giá trị thời gian và ngày tháng. Được sử dụng để đại diện cho các giá trị ngày tháng và thời gian, module datetime cho phép người dùng thực hiện nhiều thao tác như tạo đối tượng ngày, chuyển đổi định dạng ngày, tạo đối tượng thời gian, thực hiện phép toán với ngày, tính toán khoảng cách thời gian giữa hai ngày, và nhiều thao tác khác. Module datetime cũng hỗ trợ tính toán với múi giờ và phân giây, cho phép người dùng làm việc với các giá trị thời gian và ngày tháng chính xác hơn.

Để 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))
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']
['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()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
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 ngày tháng năm
Đị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 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 giờ phút giây
Đị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
Đị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
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()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
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()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
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)
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
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?