Bản địa hóa múi giờ Python

Không có cách chung, đa nền tảng để lấy thông tin này vì không phải tất cả các hệ thống đều sử dụng khóa vùng IANA để định cấu hình múi giờ của chúng. Ngay cả những thứ có khả năng được cấu hình theo cách đó cũng có xu hướng có các cơ chế cấu hình khác

Có một số cách để đưa ra ước tính dự đoán tốt nhất có khả năng đúng, nhưng tôi đã không dành đủ thời gian để cố gắng phát hiện giờ địa phương hiện tại dưới dạng khóa múi giờ IANA để tự tin vào bất kỳ phương pháp nào tôi đề xuất (ví dụ:

Nó cho phép bạn thao tác thời gian bằng cách gán thời gian cho các múi giờ sử dụng các múi giờ Olsen (e. g.

import datetime
import pytz
1)

Trước tiên hãy nhập các gói cần thiết của chúng tôi. ngày giờ và pytz

Trong 1]

import datetime
import pytz

Bây giờ, hãy xem chuyển đổi giờ Sydney địa phương sang UTC

Trước tiên, chúng tôi cần

import datetime
import pytz
2 thời gian sử dụng múi giờ địa phương của chúng tôi

Sau đó, chúng tôi

import datetime
import pytz
3 thời gian tới múi giờ mục tiêu của chúng tôi

Trong 2]

dt = datetime.datetime(2000, 1, 1, 18, 30)
print(dt)

2000-01-01 18:30:00

Trong 3]

local_tz = pytz.timezone('Australia/Sydney')
dt = local_tz.localize(dt)
print(dt)

2000-01-01 18:30:00+11:00

Trong [4]

________số 8

2000-01-01 07:30:00+00:00

Sử dụng múi giờ pytz Olsen thay vì chỉ tự xác định độ lệch là vô cùng hữu ích

Một trong những lý do cho điều này là múi giờ cho một vị trí nhất định có thể thay đổi

Ví dụ: nếu chúng tôi ở Đức, chúng tôi có 2 múi giờ, nhờ tiết kiệm thời gian ban ngày

  • Giờ Trung Âu (CET, UTC+0100)
  • Giờ mùa hè Trung Âu (CEST, UTC+0200)

Hãy xem điều này hoạt động như thế nào, hãy lấy cùng một giờ địa phương vào mùa đông và mùa hè và xem điều gì sẽ xảy ra

Múi giờ biểu thị thời gian chuẩn hóa tùy thuộc vào phần nào của thế giới đang được xem xét

Nói một cách đơn giản, múi giờ đề cập đến giờ địa phương của một khu vực. UTC (Giờ phối hợp quốc tế) là giờ thiên văn dựa trên vòng quay của trái đất, là tiêu chuẩn để phối hợp thời gian dựa trên khu vực của thế giới

Ghi chú. UTC – Giờ phối hợp quốc tế là tiêu chuẩn thời gian chung trên toàn thế giới. Vì vậy, trong Python, để làm việc với múi giờ mà không gặp bất kỳ sự cố nào, bạn nên sử dụng UTC làm múi giờ cơ sở của mình

Ví dụ: CT (Giờ Trung tâm) ở Bắc và Nam Mỹ 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 Tiết kiệm ánh sáng ban ngày. Dưới đây là một vài ví dụ

UTC OffsetLocationsNameLocationUTC +9Nhật Bản, Hàn Quốc và 5 quốc gia khácJSTTokyoUTC +5. 30 IndiaISTẤn Độ UTC +1 Vương quốc Anh và 20 BSTLondonUTC -10Hawaii/USA và 2 HSTHonoluluTimeZones khác

Python cung cấp lớp cơ sở trừu tượng

import datetime
import pytz
07 cung cấp các phương thức để xử lý múi giờ. Nhưng lớp này là một lớp cơ sở trừu tượng và không nên được khởi tạo trực tiếp. Chúng ta cần định nghĩa một lớp con của tzinfo để nắm bắt thông tin về một múi giờ cụ thể

Thư viện pytz đã triển khai lớp múi giờ để xử lý các phần bù cố định tùy ý từ UTC và múi giờ. Thư viện này cho phép tính toán múi giờ chính xác và đa nền tảng, đồng thời giải quyết vấn đề về thời gian không rõ ràng vào cuối giờ tiết kiệm ánh sáng ban ngày

pytz là một triển khai cụ thể của lớp cơ sở trừu tượng tzinfo và được sử dụng để tạo các đối tượng datetime nhận biết múi giờ

Ví dụ: Hàm

import datetime
import pytz
08 trả về ngày giờ địa phương hiện tại mà không có bất kỳ thông tin múi giờ nào. Sử dụng thư viện pytz, chúng ta có thể chuyển tên múi giờ cho hàm này để lấy ngày giờ hiện tại trong múi giờ đã cho

Chúng tôi sẽ sử dụng các thuộc tính và phương thức sau của mô-đun pytz để làm việc với múi giờ trong Python

  • import datetime
    import pytz
    
    09. Nhận múi giờ UTC tiêu chuẩn
  • import datetime
    import pytz
    
    30. Tạo đối tượng múi giờ của một khu vực cụ thể
  • import datetime
    import pytz
    
    31. Chuyển đổi thời gian của một múi giờ cụ thể sang múi giờ khác

Tạo đối tượng ngày giờ nhận biết múi giờ

Trong Python, một đối tượng ngày có thể được đề cập có hoặc không có múi giờ. Dựa vào đó, một đối tượng được gọi là Naive hoặc Aware. Theo mặc định, một đối tượng ngày là ngây thơ. Một đối tượng ngày giờ hoặc thời gian được biết nếu nó giữ giá trị múi giờ (tz)

Thực hiện theo các bước bên dưới để tạo Đối tượng Datetime nhận biết múi giờ trong Python. –

  • Cài đặt mô-đun pytz nếu chưa được cài đặt bằng lệnh
    import datetime
    import pytz
    
    32
  • Sử dụng hàm
    import datetime
    import pytz
    
    33 để tạo đối tượng múi giờ
  • Sử dụng hàm
    import datetime
    import pytz
    
    34 hoặc
    import datetime
    import pytz
    
    35 để tạo múi giờ nhận biết ngày giờ hiện tại

Bản địa hóa múi giờ Python
Bản địa hóa múi giờ Python

Ví dụ

import datetime
import pytz
9

đầu ra

import datetime
import pytz
0
  • Để có được thời gian UTC, chúng tôi đã sử dụng
    import datetime
    import pytz
    
    09 làm tham số cho hàm
    import datetime
    import pytz
    
    08. Phần bù ở cuối là +00. 00 là độ lệch UTC tiêu chuẩn
  • Để có được thời gian của CDT, chúng tôi đã sử dụng vùng 'US/Central' để tạo múi giờ. Phần bù ở cuối là -05. 00 là phần bù UTC của vùng CDT

Tham khảo danh sách tất cả các múi giờ trong Python nếu bạn không biết tên chính xác của múi giờ để tạo ngày và giờ theo đúng múi giờ

Để nhận biết múi giờ ngày giờ cũ/hiện tại, hãy sử dụng đoạn mã sau

import datetime
import pytz
3

Ghi chú. Phương thức

import datetime
import pytz
38 trả về phiên bản
import datetime
import pytz
39 mới

Định dạng UTC DateTime để lấy tên múi giờ

Trích xuất tên múi giờ từ UTC DateTime bằng cách sử dụng định dạng DateTime trong Python. Sử dụng chỉ thị

import datetime
import pytz
60 để lấy tên múi giờ

import datetime
import pytz
6

Ghi chú. IST là tên múi giờ

Tạo TimeZone Aware Datetime Object Sử dụng lớp múi giờ

Hãy xem cách tạo một đối tượng

import datetime
import pytz
39 nhận biết múi giờ mà không cần pytz

Các mô-đun datetime có lớp

import datetime
import pytz
62, lớp này lại là lớp con của lớp cơ sở trừu tượng
import datetime
import pytz
63. Mỗi phiên bản được tạo của lớp múi giờ đại diện cho phần bù của múi giờ từ Giờ phối hợp quốc tế (UTC)

Chúng ta có thể tạo một đối tượng

import datetime
import pytz
39 nhận biết UTC bằng cách gán
import datetime
import pytz
65

cú pháp

import datetime
import pytz
3

Ở đây

import datetime
import pytz
66 đại diện cho sự khác biệt giữa giờ địa phương và UTC (Giờ phối hợp quốc tế). Nó có thể là một đối tượng đồng bằng thời gian nằm trong khoảng từ giờ=-24 đến +24

Ví dụ

import datetime
import pytz
5

Ghi chú. chúng tôi đang đặt phần bù UTC bằng cách sử dụng lớp timedelta

import datetime
import pytz
67

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

Sử dụng mô-đun pytz, chúng tôi có thể nhận được ngày và giờ hiện tại của bất kỳ múi giờ nào

cú pháp

import datetime
import pytz
7

bước

  • Sử dụng hàm
    import datetime
    import pytz
    
    33 để tạo đối tượng múi giờ
  • Sử dụng hàm
    import datetime
    import pytz
    
    34 để lấy ngày giờ hiện tại của múi giờ đã cho

Ghi chú. UTC – Giờ phối hợp quốc tế là tiêu chuẩn thời gian chung trên toàn thế giới. Vì vậy, để làm việc với múi giờ mà không gặp bất kỳ sự cố nào, bạn nên sử dụng UTC làm múi giờ cơ sở của mình

Trong ví dụ này, chúng ta sẽ xem cách lấy ngày giờ hiện tại theo các múi giờ sau

Hoa Kỳ. Nhận Ngày và Giờ hiện tại theo Múi giờ sau của Hoa Kỳ

dt = datetime.datetime(2000, 1, 1, 18, 30)
print(dt)
0

đầu ra

dt = datetime.datetime(2000, 1, 1, 18, 30)
print(dt)
1

Múi giờ khác

dt = datetime.datetime(2000, 1, 1, 18, 30)
print(dt)
2

đầu ra

import datetime
import pytz
00

Cũng thấy. Chuyển đổi giữa các múi giờ

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

import datetime
import pytz
07 là một lớp cơ sở trừu tượng chứa thông tin về đối tượng ngày hoặc giờ được truyền cho chúng

tzinfo thường chứa các thông tin sau. –

  • Tên múi giờ của Datetime
  • Bù đắp từ UTC (Giờ phối hợp quốc tế)
  • DST (Tiết kiệm ánh sáng ban ngày)

Lớp tzinfo cung cấp phương thức sau để lấy thông tin múi giờ. –

  • import datetime
    import pytz
    
    31. Trả về tên múi giờ tương ứng với đối tượng 
    import datetime
    import pytz
    
    39 
    import datetime
    import pytz
    
    33. Phương thức này trả về tên được sử dụng trong khi tạo đối tượng múi giờ
  • import datetime
    import pytz
    
    34. Phương thức này trả về tổng phần bù từ UTC phải là một đối tượng timedelta. Các giá trị của timedelta là dương nếu nó ở phía đông của UTC và âm nếu ở phía tây của UTC. Tổng phần bù bao gồm cả giá trị múi giờ và DST (Tiết kiệm ánh sáng ban ngày). Do đó, phạm vi của timedelta nằm trong khoảng từ -timedelta(hours=24) đến timedelta(hours=24)
  • import datetime
    import pytz
    
    35. Phương thức này trả về độ lệch dst trong các vùng có hiệu lực dst. Trong các trường hợp khác, nó sẽ chỉ trả về
    import datetime
    import pytz
    
    36. Thông tin dst đã là một phần của utcoffset, do đó, t
    import datetime
    import pytz
    
    37 sẽ trả về phần bù tiêu chuẩn của múi giờ bất kể ngày và giờ mà chỉ trên vị trí địa lý

Ví dụ

import datetime
import pytz
01

Mã của chúng tôi tạo ra các thông tin sau

import datetime
import pytz
02

Các mô-đun datetime có lớp

import datetime
import pytz
62, lớp này lại là lớp con của lớp cơ sở trừu tượng 
import datetime
import pytz
63

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

Sử dụng phương thức

import datetime
import pytz
50 để chuyển đổi ngày giờ từ múi giờ này sang múi giờ khác. Phương thức này sử dụng một thể hiện của đối tượng datetime và trả về một datetime mới của một múi giờ nhất định

import datetime
import pytz
03

đầu ra

import datetime
import pytz
04

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

Ghi chú. Để làm việc với múi giờ mà không gặp bất kỳ sự cố nào, bạn nên sử dụng UTC làm múi giờ cơ sở chứ không phải giờ địa phương

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

Chúng ta có thể làm điều đó với một trong các phương thức của ________ 351 có tên là ________ 352(). Phương pháp này được sử dụng để chuyển đổi ngây thơ thành giờ địa phương. Nó chấp nhận hai đối số, cụ thể là đối tượng datetime để bản địa hóa và một cờ

import datetime
import pytz
53 tùy chọn

Cờ này được đặt thành đúng nếu chúng tôi muốn bản địa hóa và thông tin tiết kiệm ánh sáng ban ngày và sai nếu chúng tôi chỉ muốn thời gian bù tiêu chuẩn và sai nếu ngược lại

Như đã đề cập ở trên,

import datetime
import pytz
63 có một phương thức gọi là
import datetime
import pytz
55 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 đúng

Làm cách nào để lấy Python giờ địa phương?

strftime(time_format) trả về giờ địa phương hiện tại dưới dạng một chuỗi tương ứng với time_format đã cho. Ghi chú. thời gian. strftime() và ngày giờ

Làm cách nào để chuyển đổi giờ UTC thành giờ địa phương trong Python?

Chuyển đổi chuỗi ngày giờ UTC thành giờ địa phương .
Tạo một đối tượng datetime từ chuỗi thời gian UTC
Đối tượng datetime này sẽ không có múi giờ nào được liên kết với nó. .
Chuyển đổi múi giờ của đối tượng datetime thành múi giờ cục bộ bằng cách gọi hàm astimezone() trên đối tượng datetime

Pytz có xử lý DST không?

pytz sẽ giúp bạn biết liệu một ngày có chịu ảnh hưởng của DST hay không bằng cách kiểm tra phương thức dst() . Những gì bạn thực sự có thể làm là chuyển đổi trở lại thời gian bù đắp ngây thơ, sau đó áp dụng delta…

Làm cách nào để đặt múi giờ trong Python datetime?

Lấy thời gian hiện tại bằng datetime. now() (trả về ngày và giờ địa phương hiện tại) và chuyển hàm timezone() (lấy múi giờ của một vị trí cụ thể) với múi giờ làm đối số cho nó nói 'UTC . Định dạng DateTime ở trên bằng cách sử dụng strftime() và in nó. . Format the above DateTime using the strftime() and print it.