Python lấy tên múi giờ

Trong hướng dẫn này, chúng tôi sẽ xác định cách chúng tôi có thể làm việc với các múi giờ khác nhau trong Python. Chúng ta cũng sẽ tìm hiểu về múi giờ địa phương của Python. Múi giờ có thể được mô tả là khu vực địa lý nơi thời gian tiêu chuẩn được quan sát. Hãy giới thiệu ngắn gọn về múi giờ. Chúng tôi sẽ sử dụng thư viện pytz của Python để làm việc với múi giờ

Múi giờ là gì?

Múi giờ được xác định là thời gian tiêu chuẩn tùy thuộc vào đại diện địa lý của địa điểm đó. Nói cách khác, múi giờ đề cập đến giờ địa phương của một khu vực cụ thể dựa trên vòng quay của trái đất. Nó được xác định theo UTC [Giờ phối hợp quốc tế], tiêu chuẩn để phối hợp thời gian dựa trên khu vực của thế giới

Lưu ý - Nên sử dụng UTC làm múi giờ cơ sở của bạn

Ví dụ - UTC ở Singapore là 2. 5 giờ trước Ấn Độ hoặc múi giờ ở miền Bắc và chậm hơn 5 hoặc 6 giờ và được biểu thị là UTC-5 hoặc UTC-6 dựa trên ánh sáng ban ngày. Hãy xem bảng sau đây về các múi giờ khác nhau trên toàn thế giới

Thư viện pytz Python

Python pytz cơ sở dữ liệu Olson tz thành Python và hỗ trợ hầu hết các múi giờ. Mô-đun này cho phép chúng tôi thực hiện các chức năng chuyển đổi ngày-giờ và phục vụ cơ sở quốc tế của khách hàng. Chúng tôi cũng có thể thực hiện các tính toán theo yêu cầu của dự án và chúng tôi cũng có thể tạo các phiên bản datetime nhận biết múi giờ. Nó cũng có thể giải quyết vấn đề thời gian mơ hồ vào cuối ngày

Cài đặt

Chúng tôi cần cài đặt nó trong hệ thống của mình để hoạt động với múi giờ. Chúng ta có thể cài đặt nó bằng lệnh bên dưới

Lệnh trên sẽ cài đặt pytz trên máy của bạn. Nên cài đặt trong môi trường ảo

Python đi kèm với DateTime. lớp cơ sở trừu tượng tzinfo[]. Lớp này cho phép chúng tôi xử lý múi giờ. Nhưng nó không phải là cách tốt để khởi tạo trực tiếp. Để lấy thông tin về múi giờ cụ thể, chúng ta cần tạo lớp con của DateTime. tzinfo[]

Thư viện pytz khắc phục nhược điểm này, nó đã cấy một lớp múi giờ để xử lý phần bù cố định tùy ý từ múi giờ và UTC

Ví dụ - Để lấy thời gian hiện tại trong Python, chúng tôi sử dụng datetime. hàm now[]. Tuy nhiên, phương pháp này không trả về bất kỳ múi giờ nào. Sử dụng múi giờ, chúng ta có thể chuyển múi giờ trong hàm này và nó sẽ trả về ngày giờ hiện tại theo múi giờ đã cho

Thuộc tính pytz

Pytz cung cấp ba thuộc tính và phương thức để làm việc với múi giờ trong Python

  • pytz. utc
  • pytz. múi giờ ['khu vực']
  • pytz. múi giờ[]

Làm thế nào để có được thời gian hiện tại?

Để có được thời gian hiện tại, chúng tôi sử dụng mô-đun thời gian. Chúng ta có thể sử dụng các chức năng sau của mô-đun thời gian

  • localtime[]- Nó cho phép lấy giờ địa phương hiện tại
  • strftime["%H. %M. %S", t]- nó cho phép xác định định dạng thời gian được sử dụng để hiển thị thời gian

Thí dụ -

đầu ra

The current timezone is: 21:22:41

Chúng tôi nhận được múi giờ hiện tại của khu vực và UTC tiêu chuẩn

Tạo đối tượng Timezone Naïve Datetime

Một đối tượng dữ liệu có thể được xác định có hoặc không có múi giờ trong Python. Đối tượng này còn được gọi là Aware hoặc Naïve. Nếu nó giữ giá trị múi giờ, nó là một nhận thức

Một đối tượng dữ liệu có thể được xác định có hoặc không có múi giờ trong Python. Đối tượng này còn được gọi là Aware hoặc Naïve. Nếu nó giữ giá trị múi giờ, thì nó là một đối tượng Datetime nhận biết;

Hãy hiểu ví dụ sau về việc tạo một đối tượng múi giờ

Thí dụ -

đầu ra

Timezone naive: 2022-05-08 11:38:01.362134
Timezone Aware: 2022-05-08 06:08:01.363137+00:00
US Central DateTime 2022-05-08 01:08:11.323668-05:00

Giải trình -

Trong đoạn mã trên, chúng tôi đã sử dụng pytz. utc làm tham số cho datetime. hàm now[]. Phần bù ở cuối là +0. 00 là độ lệch UTC tiêu chuẩn. Trong một dòng khác, chúng tôi đã sử dụng vùng 'US/Central' để tạo múi giờ. Phần bù ở cuối -05. 00 là phần bù UTC của vùng CDT

Thư viện pytz có nhiều danh sách múi giờ, chúng ta có thể in các múi giờ bằng mã bên dưới

đầu ra

['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Asmera', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 
'Canada/Pacific', 'Canada/Saskatchewan', 'Canada/Yukon', 'Chile/Continental', 'Chile/EasterIsland', 'Cuba', 'EET', 'EST', 'EST5EDT', 'Egypt', 'Eire', 'Etc/GMT', 'Etc/GMT+0', 'Etc/GMT+1', 'Etc/GMT+10', 'Etc/GMT+11', 'Etc/GMT+12', 'Etc/GMT+2', 'Etc/GMT+3', 'Etc/GMT+4', 'Etc/GMT+5', 'Etc/GMT+6', 'Etc/GMT+7', 'Etc/GMT+8', 'Etc/GMT+9', 'Etc/GMT-0', 'Etc/GMT-1', 'Etc/GMT-10', 'Etc/GMT-11', 'Etc/GMT-12', 'Etc/GMT-13', 'Etc/GMT-14', 'Etc/GMT-2', 'Etc/GMT-3', 'Etc/GMT-4', 'Etc/GMT-5', 'Etc/GMT-6', 'Etc/GMT-7', 'Etc/GMT-8', 'Etc/GMT-9', 'Etc/GMT0', 'Etc/Greenwich', 'Etc/UCT', 'Etc/UTC', 'Etc/Universal', 'Etc/Zulu', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belfast', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Nicosia', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Tiraspol', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GB', 'GB-Eire', 'GMT', 'GMT+0', 'GMT-0', 'GMT0', 'Greenwich', 'HST', 'Hongkong', 'Iceland', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Iran', 'Israel', 'Jamaica', 'Japan', 'Kwajalein', 'Libya', 'MET', 'MST', 'MST7MDT', 'Mexico/BajaNorte', 'Mexico/BajaSur', 'Mexico/General', 'NZ', 'NZ-CHAT', 'Navajo', 'PRC',..............
'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Johnston', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Ponape', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Samoa', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Truk', 'Pacific/Wake', 'Pacific/Wallis', 'Pacific/Yap', 'Poland', 'Portugal', 'ROC', 'ROK', 'Singapore', 'Turkey', 'UCT', 'US/Alaska', 'US/Aleutian', 'US/Arizona', 'US/Central', 'US/East-Indiana', 
'US/Eastern', 'US/Hawaii', 'US/Indiana-Starke', 'US/Michigan', 'US/Mountain', 'US/Pacific', 'US/Samoa', 'UTC', 'Universal', 'W-SU', 'WET', 'Zulu']

Nhận thời gian hiện tại ở múi giờ khác nhau

Mô-đun pytz cho phép chúng tôi lấy ngày và giờ hiện tại của bất kỳ múi giờ nào bằng phương pháp bên dưới

Cú pháp -

Đầu tiên, chúng ta tạo đối tượng múi giờ bằng pytz. múi giờ ['tên khu vực'], chuyển đối tượng này sang datetime. now[timezone_obj] để lấy ngày giờ hiện tại của múi giờ đã cho

Sử dụng danh sách múi giờ ở trên, chúng ta sẽ nhận được múi giờ hiện tại của các múi giờ khác nhau

Ví dụ 1

đầu ra

US Buenos DateTime: 2022:05:08 03:52:13 -03 -0300
US Adak timezone DateTime: 2022:05:07 21:52:13 HDT -0900
US Eastern timezone DateTime: 2022:05:07 22:52:13 AKDT -0800
US Michigan timezone DateTime: 2022:05:08 02:52:13 EDT -0400
US Belam timezone DateTime: 2022:05:08 03:52:13 -03 -0300

Giải trình -

Trong đoạn mã trên, chúng tôi đã nhận được thời gian hiện tại của các khu vực khác nhau của Mỹ

Ví dụ - 2. Nhận múi giờ của một quốc gia khác

đầu ra

Israel DateTime: 2022:05:08 10:16:46 IDT +0300
Rome DateTime: 2022:05:08 09:16:46 CEST +0200
Amsterdam DateTime: 2022:05:08 09:16:46 CEST +0200
Hongkong DateTime: 2022:05:08 15:16:46 HKT +0800
Jamaica DateTime: 2022:05:08 02:16:46 EST -0500
Turkey: DateTime: 2022:05:08 10:16:46 +03 +0300

Khi chúng tôi chạy mã, nó sẽ trả về múi giờ hiện tại của các quốc gia khác nhau

Nhận thông tin múi giờ bằng tzinfo

Sử dụng Ngày giờ. tzinfo, chúng ta có thể lấy thông tin về ngày hoặc giờ. tzinfo thường có các thông tin sau

  • Múi giờ của datetime
  • Tiết kiệm ánh sáng ban ngày
  • Bù đắp từ UTC

Lớp tzinfo là lớp trừu tượng, lớp này cung cấp các phương thức sau để lấy thông tin múi giờ

  • utcoffset[dt] - Nó trả về tổng phần bù từ UTC, đây sẽ là một đối tượng timedelta. Nếu đồng bằng thời gian ở phía đông của UTC, giá trị đồng bằng thời gian sẽ dương. Nếu đồng bằng thời gian ở phía tây của UTC, giá trị đồng bằng thời gian sẽ âm. Múi giờ địa phương có cả giá trị múi giờ và DST. Do đó, phạm vi của đồng bằng thời gian là giữa timedelta giờ=24 đến timedelta[giờ=24]
  • tzname[dt] - Phương thức này trả về tên múi giờ tương ứng với đối tượng datetime
  • utcoffset[dt] - Phương pháp này được sử dụng để lấy phần bù DST trong các vùng có hiệu lực DST. Nếu DST không có hiệu lực, nó sẽ chỉ trả về timedelta[0]. Thông tin DTC đã là một phần của phần bù UTC

Hãy hiểu ví dụ sau

Ví dụ 1

đầu ra

Europe London DateTime: 2022:05:08 09:12:09 BST +0100
BST
1:00:00
1:00:00

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

Chúng ta có thể chuyển đổi ngày giờ từ múi giờ này sang múi giờ khác bằng cách sử dụng hàm datetime. phương thức astimezone[]. Phương thức này lấy đối tượng datetime làm tham số và trả về một datetime mới của một múi giờ nhất định. Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

UTC DateTime: 2022:05:08 08:23:21 UTC +0000
US Hawaii DateTime: 2022:05:07 22:23:21 HST -1000
US Mountain DateTime: 2022:05:07 22:23:21 HST -1000
India DateTime: 2022:05:08 13:53:21 IST +0530

Làm việc với các múi giờ địa phương

Trong phần trên, chúng tôi đã đề cập rằng datetime ngây thơ đối với một instance datetime đã biết. Chúng ta có thể chuyển giá trị múi giờ được đặt thành giá trị tiêu chuẩn cục bộ

Mô-đun pytz cung cấp phương thức localize[] được sử dụng để chuyển đổi giờ ngây thơ sang giờ địa phương. Nó nhận các đối số, cụ thể là đối tượng datetime để bản địa hóa và cờ is_dst tùy chọn

tzinfo có phương thức dst[] sẽ trả về thông tin Giờ tiết kiệm ánh sáng ban ngày [DST] nếu cờ được đặt thành true

Hãy hiểu ví dụ sau

Thí dụ -

đầu ra

Indian Standard Time:: 2022-05-08 14:28:37 IST+0530
Amsterdam with daylight saving time:: 1997-12-03 02:00:00 CET+0100
Daylight saving time in amsterdam on 3/8/83:: 0:00:00

Ví dụ - 2. Chuyển đổi định dạng UTC sang định dạng IST

đầu ra

________số 8

Sự kết luận

Hướng dẫn này đã trình bày các phương thức thiết yếu của thư viện pytz. Múi giờ đóng vai trò thiết yếu trong phát triển phần mềm/phát triển web và chúng ta đã thảo luận về cách chúng ta có thể lấy múi giờ và múi giờ hiện tại. Hướng dẫn này sẽ giúp bạn làm quen với thư viện pytz và múi giờ

Múi giờ pytz là gì?

Mô-đun pytz cho phép chuyển đổi ngày giờ và tính toán múi giờ để các ứng dụng Python của bạn có thể theo dõi ngày và giờ mà vẫn giữ nguyên .

Làm cách nào để có được thời gian UTC bằng Python?

Nhận thời gian UTC hiện tại .
Sử dụng ngày giờ. phương thức now[] để lấy thời gian hiện tại
Sử dụng lớp múi giờ với phiên bản UTC với phương thức now[] để lấy thời gian UTC hiện tại trong Python

Làm cách nào chúng tôi có thể nhận được tất cả các múi giờ trong mô-đun pytz?

Bạn có thể liệt kê tất cả các múi giờ có sẵn bằng pytz. all_timezones. Trong [40]. nhập pytz Trong [41]. pytz. hết_timezones[42]. ['Châu Phi/Abidjan', 'Châu Phi/Accra', 'Châu Phi/Addis_Ababa',. ] .
Ngoài all_timezones , pytz còn cung cấp common_timezones. .
Tại sao Trung Quốc mất tích?

Chủ Đề