Xử lý ngày tháng trong Python

Xử lý ngày tháng trong Python

Bài viết này giải thích về cách xử lý ngày tháng trong Python.

YouTube Video

Xử lý ngày tháng trong Python

Xử lý ngày tháng trong Python chủ yếu sử dụng module datetime. Module này cung cấp nhiều lớp và hàm khác nhau để xử lý ngày và giờ.

Dưới đây là một số ví dụ cơ bản về cách xử lý ngày tháng bằng module datetime.

Lấy ngày và giờ

Bạn có thể lấy ngày và giờ hiện tại như sau. datetime.now()datetime.today() trả về kết quả gần như giống nhau, nhưng có thể có sự khác biệt về cách chúng xử lý múi giờ.

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • Đoạn mã này lấy và hiển thị ngày giờ hiện tại, cũng như chỉ ngày hôm nay.

Tạo ngày và giờ cụ thể

Bạn có thể tạo một ngày và giờ cụ thể như sau.

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • Đoạn mã này tạo và hiển thị ngày giờ đã chỉ định (ngày 7 tháng 11 năm 2023, 10:30:45).

Định dạng ngày tháng

Định dạng ngày tháng có thể được thực hiện như sau.

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • Đoạn mã này lấy ngày giờ hiện tại, định dạng nó theo định dạng chỉ định sử dụng strftime, và hiển thị kết quả.

Chuỗi định dạng ngày tháng

  • %Y: Năm (4 chữ số)
  • %m: Tháng (01 đến 12)
  • %d: Ngày (01 đến 31)
  • %H: Giờ (00 đến 23)
  • %M: Phút (00 đến 59)
  • %S: Giây (00 đến 59)

Phân tích chuỗi ngày tháng

Bạn có thể chuyển một chuỗi biểu diễn ngày tháng thành đối tượng datetime.

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • Đoạn mã này chuyển một ngày tháng dưới dạng chuỗi thành đối tượng datetime bằng cách sử dụng strptime() và hiển thị nó.

Phép tính với ngày tháng

Có thể thực hiện các phép toán ngày tháng như sau.

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • Đoạn mã này sử dụng timedelta để cộng hoặc trừ ngày và giờ từ ngày giờ hiện tại, tính toán và hiển thị ngày giờ cho ngày mai, một tuần trước và hai giờ sau.

Xử lý múi giờ

Bạn cũng có thể xử lý múi giờ với mô-đun datetime.

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • datetime trả về một 'naive datetime' (không có thông tin múi giờ) theo mặc định. Bạn có thể xử lý múi giờ một cách rõ ràng bằng cách sử dụng lớp timezone hoặc zoneinfo.

Lớp date và lớp time

Với mô-đun datetime, bạn cũng có thể xử lý chỉ ngày hoặc chỉ giờ.

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • Lớp date chỉ xử lý ngày, và lớp time chỉ xử lý giờ.

Chuyển đổi giữa datetimetimestamp

Có thể chuyển đổi giữa UNIX timestamp và đối tượng datetime. Ở đây, UNIX timestamp đề cập đến số giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970.

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • Đoạn mã này chuyển ngày giờ hiện tại thành UNIX timestamp, sau đó sử dụng hàm fromtimestamp() để chuyển đổi timestamp đó ngược lại thành đối tượng datetime.

Các lỗi phổ biến

Khi sử dụng mô-đun datetime, bạn nên lưu ý những điểm sau.

  • datetime.now() không tính đến múi giờ, vì vậy để hỗ trợ quốc tế hóa, bạn cần sử dụng rõ ràng timezone.utc.
  • Hãy cẩn thận không nhầm lẫn giữa %m (tháng) và %M (phút) trong các chuỗi định dạng.

Tóm tắt

Module datetime cũng cung cấp nhiều tính năng khác để xử lý ngày và giờ linh hoạt. Ngoài ra, còn có các lớp như date, time, và timedelta, chuyên dụng cho các thao tác cụ thể.

Sử dụng các thư viện khác cũng cho phép xử lý ngày tháng ở mức độ cao hơn. Ví dụ, pandas chuyên xử lý dữ liệu chuỗi thời gian, trong khi dateutil phù hợp để phân tích ngày tháng phức tạp. Ngoài ra, thư viện arrow cũng rất hữu ích.

Bạn có thể làm theo bài viết trên bằng cách sử dụng Visual Studio Code trên kênh YouTube của chúng tôi. Vui lòng ghé thăm kênh YouTube.

YouTube Video