CodeGym /Các khóa học /Python SELF VI /Giới thiệu về làm việc với múi giờ

Giới thiệu về làm việc với múi giờ

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Tầm quan trọng của múi giờ

Múi giờ không chỉ là lý do tiện lợi để có chút jet lag khi bay quốc tế. Chúng đóng vai trò rất quan trọng trong lập trình, đặc biệt khi làm việc với các ứng dụng và dịch vụ toàn cầu. Theo dõi giờ theo múi giờ là cần thiết để lưu trữ và hiển thị dữ liệu, lập kế hoạch nhiệm vụ, phối hợp nhóm trên khắp thế giới và nhiều hơn nữa. Không tính toán múi giờ đúng cách, code của bạn có thể tạo ra những sự bất thường về thời gian, mà chẳng ai muốn điều đó, đúng không?

Múi giờ là gì?

Múi giờ là khu vực mà tất cả đồng hồ hiển thị cùng một giờ chuẩn. Mỗi múi giờ được xác định bằng độ lệch so với Giờ Phối hợp Quốc tế (UTC). Ví dụ, nếu múi giờ của bạn chênh 2 giờ so với UTC, múi giờ của bạn được gọi là UTC+2.

Chuyển đổi thời gian giữa các múi giờ

Khi chúng ta làm việc với dữ liệu lưu trữ thời gian, thường cần điều chỉnh thời gian từ múi giờ này sang múi giờ khác. Ví dụ, bạn đã lên kế hoạch chạy chiến dịch marketing trên server hoạt động theo giờ UTC, nhưng muốn nó diễn ra chính xác vào 9 giờ sáng theo giờ New York (UTC-5). Đó là lúc múi giờ trở nên quan trọng.

Để đơn giản hóa quy trình này, Python cung cấp thư viện pytz, hỗ trợ chuyển đổi thời gian giữa các múi giờ. Cùng xem qua các ví dụ sử dụng nó như thế nào nhé.

2. Làm việc với múi giờ trong Python

Sử dụng pytz để quản lý múi giờ

Sau khi cài đặt, bạn có thể bắt đầu thử nghiệm với pytz. Import thư viện cùng với datetime:

Python

from datetime import datetime
import pytz

Lấy giờ hiện tại ở một múi giờ cụ thể

Hãy xem bây giờ là mấy giờ ở New York:

Python

# Tạo một đối tượng múi giờ cho New York
ny_tz = pytz.timezone('America/New_York')

# Lấy giờ hiện tại ở UTC
utc_now = datetime.now(pytz.utc)

# Chuyển đổi giờ UTC sang giờ New York
ny_time = utc_now.astimezone(ny_tz)

# In kết quả
print("Thời gian hiện tại ở New York:", ny_time)

Code này chuyển đổi giờ hiện tại UTC sang giờ New York, sau đó in kết quả ở định dạng dễ đọc.

Chuyển đổi thời gian giữa các múi giờ

Giả sử bạn có thời gian sự kiện quan trọng ở London và bạn cần biết khi nào nó diễn ra theo giờ Tokyo.

Python

# Thời gian sự kiện ở London
event_time = datetime(2023, 10, 31, 15, 0, 0, tzinfo=pytz.utc).astimezone(pytz.timezone('Europe/London'))

# Chuyển đổi thời gian sang Tokyo
tokyo_tz = pytz.timezone('Asia/Tokyo')
event_time_tokyo = event_time.astimezone(tokyo_tz)

print("Thời gian sự kiện ở Tokyo:", event_time_tokyo)

3. Làm việc nâng cao với múi giờ trong Python

Danh sách các múi giờ có sẵn

Bằng cách sử dụng pytz.all_timezones, bạn có thể lấy danh sách tất cả các múi giờ được hỗ trợ bởi thư viện pytz.

Python

import pytz

print("Ví dụ các múi giờ:")
for timezone in pytz.all_timezones[:5]:  # Hiển thị 5 múi giờ đầu tiên
    print(timezone)

Kết quả (một phần):

Ví dụ các múi giờ:
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara

Thiết lập múi giờ và tạo đối tượng `datetime`

Bằng cách sử dụng pytz.timezone(), bạn có thể thiết lập múi giờ cần thiết cho ngày và giờ. Xem cách tạo đối tượng datetime với một múi giờ cụ thể.

Python

from datetime import datetime
import pytz

# Chọn múi giờ "Europe/Moscow"
moscow_timezone = pytz.timezone("Europe/Moscow")
current_time_moscow = datetime.now(moscow_timezone)
print("Thời gian hiện tại ở Moscow:", current_time_moscow)

Xử lý chuyển đổi sang giờ mùa hè

Một trong những khía cạnh quan trọng của múi giờ là xử lý chuyển đổi sang giờ mùa hè, được tự động hóa trong pytz. Ví dụ, khi làm việc với thời gian ở Mỹ, thư viện sẽ tự động áp dụng chuyển đổi giờ mùa hè nếu có hiệu lực.

Python

from datetime import datetime
import pytz

# Thiết lập ngày thuộc khoảng thời gian giờ mùa hè
date_in_summer = datetime(2024, 7, 1, 12, 0, 0)
ny_timezone = pytz.timezone("America/New_York")
ny_summer_time = ny_timezone.localize(date_in_summer)
print("Giờ mùa hè ở New York:", ny_summer_time)

# Thiết lập ngày ngoài khoảng thời gian giờ mùa hè
date_in_winter = datetime(2024, 12, 1, 12, 0, 0)
ny_winter_time = ny_timezone.localize(date_in_winter)
print("Giờ mùa đông ở New York:", ny_winter_time)

Ở đây pytz tự động xác định rằng ngày 1 tháng 7 là khoảng thời gian giờ mùa hè và áp dụng chuyển đổi thêm 1 giờ.

Những chức năng hữu ích làm việc với múi giờ

  • Lấy tất cả múi giờ: pytz.all_timezones trả về danh sách tất cả các múi giờ.
  • Chuyển đổi sang UTC: Phương thức astimezone(pytz.utc) chuyển đổi bất kỳ thời gian nào sang UTC.
  • Chuyển đổi chuỗi thời gian sang datetime: Sử dụng datetime.strptime() để chuyển đổi chuỗi thời gian sang datetime và thêm múi giờ.
  • Cập nhật múi giờ: Để cập nhật múi giờ, hãy sử dụng pytz.update().
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION