Đôi khi các kỹ sư sản phẩm hoặc cơ sở hạ tầng phải làm việc trên các cơ sở hạ tầng trải rộng khắp thế giới. Họ phải làm việc với các máy của Mỹ, Châu Á, Châu Âu, Anh, v.v. Vì vậy, các múi giờ đều quan trọng hơn đối với Python
Với sự tiến bộ không ngừng của các ngôn ngữ lập trình ngày nay, có rất nhiều mô-đun được duy trì trong hầu hết các ngôn ngữ lập trình. Trong python, chúng tôi có một mô-đun múi giờ gọi là pytz, cho phép tính toán múi giờ đa nền tảng theo thời gian thực
Nhận ngày và giờ hiện tại ở một định dạng cụ thể
Để bắt đầu, chúng tôi sẽ nhập thư viện múi giờ từ mô-đun pytz
Để cài đặt mô-đun này, bạn có thể sử dụng lệnh pip này
pip install pytz
Hoặc cho Linux
$ sudo pip install pytz
Chúng tôi cũng sẽ cần nhập datetime từ mô-đun datetime. Với mục đích thống nhất, chúng tôi có thể chỉ định định dạng mà chúng tôi muốn đầu ra ngày và giờ của chúng tôi là. Trong chương trình này, chúng tôi sẽ chỉ định nó ở dạng YY-MM-DD HH. MM. định dạng SS
Trên thư viện datetime, chúng ta sẽ gọi phương thức now[] để lấy thời gian hiện tại ở định dạng đã chỉ định và khi mã được chạy. Tuy nhiên, định dạng múi giờ đầu ra sẽ ở định dạng đối tượng ngày giờ. Vì vậy, để thay đổi nó thành định dạng dễ đọc hơn, chúng tôi chuyển đổi nó sang định dạng chuỗi thời gian bằng cách gọi phương thức strftime[] trên đó
from pytz import timezone from datetime import datetime time_format = '%Y-%m%d %H:%M:%S %Z%z' default_now = datetime.now[] formatted_now = datetime.now[].strftime[time_format] print["Date Time in defaut format: ", default_now, '\n'] print["Date Time in string format: ", formatted_now]
đầu ra
Date Time in defaut format: 2021-11-19 04:37:14.537946 Date Time in string format: 2021-1119 04:37:14
Chuyển đổi ngày và giờ hiện tại thành nhiều múi giờ
Bây giờ, chúng tôi sẽ tạo một danh sách các múi giờ và lặp qua nó để chuyển đổi thời gian hiện tại thành múi giờ đó. Chúng tôi sẽ đặt các múi giờ khác nhau từ Hoa Kỳ, Châu Âu, Châu Á và UTC là tiêu chuẩn
timezones = ['US/Central', 'Europe/London', 'Asia/Kolkata', 'Australia/Melbourne', 'UTC'] for tz in timezones: dateTime = datetime.now[timezone[tz]].strftime[time_format] print[f"Date Time in {tz} is {dateTime}"]
đầu ra
Date Time in US/Central is 2021-1118 17:23:51 CST-0600 Date Time in Europe/London is 2021-1118 23:23:51 GMT+0000 Date Time in Asia/Kolkata is 2021-1119 04:53:51 IST+0530 Date Time in Australia/Melbourne is 2021-1119 10:23:51 AEDT+1100 Date Time in UTC is 2021-1118 23:23:51 UTC+0000
Sau đó, chúng ta sẽ lặp qua tất cả các múi giờ trong danh sách mà chúng ta đã tạo làm tham số của phương thức now[] trên thư viện datetime để lấy tất cả các múi giờ và thời gian hiện tại ở các múi giờ tương ứng. Chúng tôi cũng sẽ chuyển đổi nó sang định dạng chuỗi để thuận tiện hơn khi đọc
Mẹo nhanh ngắn này phục vụ nhiều hơn như một lời nhắc nhở cho bản thân tôi. Tôi biết tôi không chỉ nói cho bản thân mình khi tôi nói việc chuyển đổi ngày và giờ giữa các múi giờ có thể thực sự khiến bạn đau đầu. Đây là bản tóm tắt nhanh về xử lý chuyển đổi múi giờ với các đối tượng datetime trong Python
Bài viết nhanh này sẽ mô tả
- Hiểu múi giờ nhận biết và không nhận biết múi giờ
- Chỉ định tại múi giờ
- Chuyển đổi sang múi giờ khác
Chúng ta sẽ cần hai thư viện Python cho việc này, pytz và Python's datetime
from datetime import datetime
now = datetime.now[]
- Trả về một đối tượng ngày giờ trong múi giờ hiện tại của bạn, nhưng nó không nhận biết múi giờ
utcnow = datetime.utcnow[]
—Trả về một đối tượng ngày giờ ở múi giờ utc, nhưng NGẠC NHIÊN, nó không nhận biết múi giờ
Nếu bạn muốn chuyển đổi bất kỳ ngày giờ nào từ múi giờ này sang múi giờ khác, trước tiên chúng ta cần biết múi giờ ban đầu và gán nó cho đối tượng datetime
Trong ví dụ trên, chúng tôi biết utcnow
là UTC, nhưng nó không nhận biết múi giờ. Chúng ta phải chỉ định một múi giờ. Trong dự án của bạn, có thể bạn đã quyết định lưu tất cả các múi giờ của mình vào múi giờ địa phương. Nói chung, nên luôn lưu trong UTC
Chỉ định múi giờ
Hãy mang Pytz vào
import pytz
Để xem tất cả các múi giờ mà Pytz có,
for tz in pytz.all_timezones:
print[tz]
Hãy chỉ định múi giờ cho utcnow
từ trước đó
utcnow = utcnow.replace[tzinfo=pytz.utc]
Trong thiết bị đầu cuối và gõ utcnow
, bạn sẽ thấy,
datetime.datetime[2020, 5, 13, 8, 39, 29, 220134, tzinfo=]
Nếu chúng ta print[utcnow]
2020–05–13 08. 39. 07. 109762+00. 00
Chúng tôi biết múi giờ
Chuyển đổi giữa các múi giờ
Bây giờ, nếu chúng ta muốn chuyển đổi giữa các múi giờ, các đối tượng from datetime import datetime
0 có một hàm hữu ích from datetime import datetime
1
Giả sử tôi muốn chuyển đổi sang múi giờ của Brisbane [ở Úc] [tôi làm việc với một khách hàng ở Úc, nơi đã truyền cảm hứng cho bài viết này]
brisbane = utcnow. múi giờ astime[pytz. múi giờ[“Úc/Brisbane”]]
Nếu bây giờ chúng ta gõ from datetime import datetime
2,
datetime.datetime[2020, 5, 13, 18, 11, 14, 960814, tzinfo=]
Nếu chúng tôi from datetime import datetime
3 nó
2020–05–13 18. 11. 14. 960814+10. 00
Bản tóm tắt- Biết múi giờ bạn đang làm việc
- Chỉ định múi giờ cho đối tượng datetime của bạn nếu nó không biết với
from datetime import datetime
4 - Sử dụng
from datetime import datetime
5 để chuyển đổi sang múi giờ khác
Thời gian hạnh phúc, chuyển đổi hạnh phúc
Nếu bạn thấy hướng dẫn này hữu ích, tôi sử dụng Twitter để đăng thêm các bài học về tự động hóa sẽ giúp bạn tiết kiệm thời gian và phát triển doanh nghiệp của mình. Bạn có thể theo dõi tôi tại đây
Làm cách nào để cài đặt múi giờ trong Python?
Bằng cách sử dụng hàm astimezone[], chúng ta có thể chuyển đổi thời gian thành một múi giờ khác. .cú pháp. múi giờ[t]Tham số. t là thời gian để được chuyển đổiTrở lại. Múi giờ đã chuyển đổiLàm cách nào để đặt giờ GMT trong Python?
Nhận giờ địa phương hiện tại, giờ UTC, giờ GMT, giờ ISO. .Cài đặt mô-đun pytz bằng cách sử dụng cài đặt pip pytzSử dụng pytz. timezone['region_name'] để tạo đối tượng múi giờsử dụng ngày giờ. now[timezone_obj] để lấy ngày giờ hiện tại với múi giờLàm cách nào để chuyển đổi múi giờ ngày giờ thành UTC trong Python?
Bạn có thể sử dụng mô-đun ngày giờ để chuyển đổi ngày giờ thành dấu thời gian UTC trong Python . Nếu bạn đã có đối tượng datetime trong UTC, bạn có thể timestamp[] để lấy dấu thời gian UTC. Hàm này trả về thời gian kể từ epoch cho đối tượng datetime đó.