Làm cách nào để thay đổi múi giờ trong python?

Đô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ả

  1. Hiểu múi giờ nhận biết và không nhận biết múi giờ
  2. Chỉ định tại múi giờ
  3. Chuyển đổi sang múi giờ khác
Giới thiệu về Nhận biết múi giờ và Không nhận biết múi giờ

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 datetime0 có một hàm hữu ích from datetime import datetime1

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 datetime2,

datetime.datetime(2020, 5, 13, 18, 11, 14, 960814, tzinfo=)

Nếu chúng tôi from datetime import datetime3 nó

2020–05–13 18. 11. 14. 960814+10. 00

Bản tóm tắt
  1. Biết múi giờ bạn đang làm việc
  2. 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 datetime4
  3. Sử dụng from datetime import datetime5 để 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 đổi
Trở lại. Múi giờ đã chuyển đổi

Là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 pytz
Sử 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 đó.