Bạn nên sử dụng gói pytz nếu bạn cần nhiều múi giờ và bạn cần xử lý chính xác giờ tiết kiệm thời gian của ánh sáng ban ngày (tức là những gì xảy ra từ nửa đêm đến 1 giờ sáng).
Đối với một cái gì đó đơn giản mặc dù, nó đủ dễ dàng để tạo lớp múi giờ của riêng bạn:
import datetime class EST5EDT(datetime.tzinfo): def utcoffset(self, dt): return datetime.timedelta(hours=-5) + self.dst(dt) def dst(self, dt): d = datetime.datetime(dt.year, 3, 8) #2nd Sunday in March self.dston = d + datetime.timedelta(days=6-d.weekday()) d = datetime.datetime(dt.year, 11, 1) #1st Sunday in Nov self.dstoff = d + datetime.timedelta(days=6-d.weekday()) if self.dston <= dt.replace(tzinfo=None) < self.dstoff: return datetime.timedelta(hours=1) else: return datetime.timedelta(0) def tzname(self, dt): return 'EST5EDT' dt = datetime.datetime.now(tz=EST5EDT())Ở đây bạn đang sử dụng lớp cơ sở trừu tượng datetime.tzinfo để tạo một lớp In [15]: print(dt) 2012-07-29 12:28:59.125975-04:00 In [16]: print(dt.strftime('%Y-%m-%d %H:%M:%S')) 2012-07-29 12:28:59 In [17]: print(dt.strftime('%H:%M:%S')) 12:28:59 In [18]: print(dt.strftime('%s.%f')) 1343579339.125975 0 mô tả ý nghĩa của "múi giờ phương Đông", cụ thể là bù UTC của bạn (-5 giờ) và khi thời gian tiết kiệm ánh sáng ban ngày có hiệu lực (BTWN vào Chủ nhật thứ 2 của ngày thứ 2 của Tháng 3 và Chủ nhật ngày 1 tháng 11).
Btw mẫu trên được lấy từ tài liệu In [15]: print(dt) 2012-07-29 12:28:59.125975-04:00 In [16]: print(dt.strftime('%Y-%m-%d %H:%M:%S')) 2012-07-29 12:28:59 In [17]: print(dt.strftime('%H:%M:%S')) 12:28:59 In [18]: print(dt.strftime('%s.%f')) 1343579339.125975 1: //docs.python.org/l Library/datetime.html
Không chắc bạn muốn nói gì "Nhận Python để hiển thị thời gian ở Đông", nhưng sử dụng đối tượng In [15]: print(dt) 2012-07-29 12:28:59.125975-04:00 In [16]: print(dt.strftime('%Y-%m-%d %H:%M:%S')) 2012-07-29 12:28:59 In [17]: print(dt.strftime('%H:%M:%S')) 12:28:59 In [18]: print(dt.strftime('%s.%f')) 1343579339.125975 2 từ dòng cuối cùng ở trên:
In [15]: print(dt) 2012-07-29 12:28:59.125975-04:00 In [16]: print(dt.strftime('%Y-%m-%d %H:%M:%S')) 2012-07-29 12:28:59 In [17]: print(dt.strftime('%H:%M:%S')) 12:28:59 In [18]: print(dt.strftime('%s.%f')) 1343579339.125975Hướng dẫn này trình bày cách chuyển đổi múi giờ của đối tượng DateTime sang múi giờ khác như CET, CST, EAT, EST và UTC trong ngôn ngữ lập trình Python.
Bài viết này chứa các phần dưới đây:
Hãy cùng đi sâu vào mã Python!
Nhập mô -đun DateTime & Tạo dữ liệu ví dụ
Bước đầu tiên, chúng tôi phải nhập mô -đun DateTime vào Python:
from datetime import datetime
Để chỉ định các múi giờ khác nhau trong Python, chúng tôi cũng phải tải mô -đun PYTZ:
Bây giờ, chúng ta có thể tạo một đối tượng DateTime với múi giờ UTC bằng cách áp dụng mã Python bên dưới:
my_datetime = datetime(2023, 2, 13, 17, 10, 27, tzinfo = pytz.utc) print(my_datetime) # 2023-02-13 17:10:27+00:00
Chúng tôi cũng có thể định dạng đối tượng DateTime của mình để hiển thị múi giờ bằng hàm strftime:
my_datetime_utc = my_datetime.strftime('%Y-%m-%d %H:%M:%S %Z%z') print(my_datetime_utc) # 2023-02-13 17:10:27 UTC+0000
Như bạn có thể thấy, ngày và thời gian của chúng tôi là ngày 13 tháng 2 năm 2023 lúc 05:10:27 tối.
Hãy để chuyển đổi ngày và thời gian này sang các múi giờ khác nhau.
Ví dụ 1: Chuyển đổi DateTime thành múi giờ CET
Nếu chúng ta muốn chuyển đổi một đối tượng DateTime sang múi giờ CET, chúng ta có thể sử dụng hàm Astimezone và múi giờ ‘Châu Âu/Berlin, như được hiển thị bên dưới:
my_datetime_cet = my_datetime.astimezone(pytz.timezone('Europe/Berlin')).strftime('%Y-%m-%d %H:%M:%S %Z%z') print(my_datetime_cet) # 2023-02-13 18:10:27 CET+0100
Ví dụ 2: Chuyển đổi DateTime thành Múi giờ CST
Tương tự như mã Python của ví dụ 1, chúng ta có thể chuyển đổi đối tượng DateTime ví dụ của mình thành CST bằng cách chỉ định ‘chúng ta/trung tâm trong hàm múi giờ:
my_datetime_cst = my_datetime.astimezone(pytz.timezone('US/Central')).strftime('%Y-%m-%d %H:%M:%S %Z%z') print(my_datetime_cst) # 2023-02-13 11:10:27 CST-0600
Ví dụ 3: Chuyển đổi DateTime thành múi giờ EST
Trong trường hợp chúng tôi muốn chuyển đổi múi giờ của chúng tôi sang EST, chúng tôi phải chỉ định ‘chúng tôi/phương Đông:
my_datetime_est = my_datetime.astimezone(pytz.timezone('US/Eastern')).strftime('%Y-%m-%d %H:%M:%S %Z%z') print(my_datetime_est) # 2023-02-13 12:10:27 EST-0500
Video, Tài nguyên & Tóm tắt
Bạn có cần giải thích thêm về cách thay đổi múi giờ của các đối tượng DateTime trong Python không? Sau đó, bạn nên xem video sau đây của Kênh YouTube TechnologyCult.
Trong video, loa giải thích cách chuyển đổi các múi giờ bằng gói PYTZ trong Python.
Không đủ? Bạn có thể xem xét một số hướng dẫn khác ở đây trên Quả cầu Thống kê:
- Chuyển đổi thời gian kỷ nguyên sang đối tượng DateTime & ngược lại trong Python
- Làm cho múi giờ Datetime không biết trong Python
- Chuyển đổi DateTime thành Unix Timestamp trong Python
- Chuyển đổi đối tượng DateTime sang múi giờ cục bộ
- Hướng dẫn lập trình Python
Bài đăng này đã chỉ ra cách chuyển đổi các đối tượng DateTime sang các múi giờ khác trong ngôn ngữ lập trình Python.transform datetime objects to other time zones in the Python programming language.
Lưu ý rằng chúng tôi có thể sử dụng mã của hướng dẫn này để chuyển đổi các đối tượng DateTime sang nhiều vùng thời gian khác như AEST, ACST, AFT, AKST, AST, CAT, EET, MSK, MST, PST, WAT và WET. Chúng tôi chỉ đơn giản là phải chỉ định vùng tương ứng trong hàm múi giờ.
Trong trường hợp bạn có thêm câu hỏi, bạn có thể để lại một bình luận bên dưới.
Hướng dẫn này được tạo ra với sự hợp tác của Gottumukkala Sravan Kumar. Xin vui lòng xem trang tác giả Gottumukkala, để có thêm thông tin về nền tảng học tập của anh ấy và các bài báo khác mà anh ấy đã viết cho Quả cầu Thống kê.