Python xử lý các múi giờ như thế nào?

Xử lý các múi giờ nói chung là một vấn đề hỗn loạn hấp dẫn, sau đó một lần nữa thời gian chạy ngôn ngữ có thể có vấn đề lớn hơn. Có những suy nghĩ vượt ra ngoài những suy nghĩ mà một hệ điều hành hoặc bản phân phối cần xử lý. Có một số dòng để xử lý các múi giờ, bắt đầu với thực tế là chúng thay đổi

Sự miêu tả

Khi làm việc với các múi giờ thường được cân nhắc kỹ lưỡng, một trong những phần không thân thiện nhất của thao tác chuỗi thời gian. Đặc biệt, chuyển đổi thời gian tiết kiệm ánh sáng ban ngày [DST] là một nguồn công khai của vấn đề. Đối với chính nó, một số người dùng chuỗi thời gian chọn làm việc với chuỗi thời gian theo thời gian quốc tế có tổ chức hoặc UTC là người thừa kế của Giờ trung bình Greenwich. Đây là tiêu chuẩn quốc tế hiện có. Các múi giờ được biểu thị bằng cách bù đắp từ UTC; . g. , New York trễ bốn giờ theo giờ UTC theo giờ mùa hè và 5 giờ vào thời gian còn lại trong năm

Thông tin múi giờ có trong Python từ thư viện pytz của bên thứ 3. Những tiết lộ cơ sở dữ liệu Olson, một tập hợp thông tin múi giờ thế giới. Điều này đặc biệt quan trọng đối với dữ liệu lịch sử vì ngày chuyển đổi DST đã được thay đổi nhiều lần tùy thuộc vào sự thúc đẩy của chính quyền địa phương. Thời gian chuyển đổi DST đã được thay đổi nhiều lần kể từ năm 1900 tại Hoa Kỳ

thư viện pytz

pytz đưa cơ sở dữ liệu Olson tz vào Python. 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 bằng Python 2. 4 hoặc cao hơn. Nó giải quyết tương tự vấn đề về thời gian không chắc chắn vào cuối giờ tiết kiệm ánh sáng ban ngày mà chúng ta có thể đọc thêm trong Tham khảo thư viện Python, datetime. thông tin

Quan trọng cần lưu ý. Thư viện này khác với API Python được ghi lại cho các ứng dụng tzinfo. Chúng ta cần sử dụng phương thức bản địa hóa [ ] được ghi lại trong tài liệu này nếu chúng ta muốn tạo thời gian đồng hồ treo tường cục bộ. Hơn nữa, nếu chúng tôi triển khai số học ngày vào giờ địa phương vượt qua ranh giới DST, thì kết quả có thể ở múi giờ không chính xác. Phương thức chuẩn hóa [ ] được đưa ra để sửa lỗi này

Làm cách nào để cài đặt thư viện pytz?

Gói này có thể được cài đặt bằng cách sử dụng pip hoặc từ một tarball bằng cách sử dụng các distutils Python tiêu chuẩn. Chúng tôi không cần tải xuống bất cứ thứ gì vì phiên bản mới nhất sẽ được tải xuống cho chúng tôi từ PyPI nếu chúng tôi đang cài đặt bằng pip

pip cài đặt pytz

Chạy lệnh dưới đây với tư cách là người dùng quản trị nếu chúng tôi đang cài đặt từ tarball

thiết lập trăn. cài đặt py

pytz cho doanh nghiệp

Điều này có thể truy cập như một phần của Đăng ký Tidelift. Những người bảo trì pytz và nhiều gói mới đang làm việc với Tidelift để mang lại sự hỗ trợ và bảo trì có lợi cho các phần phụ thuộc nguồn mở mà chúng tôi sử dụng để xây dựng các ứng dụng của mình. Mặc dù trả tiền cho những người duy trì các nhu cầu kỹ lưỡng, chúng tôi tiết kiệm thời gian, giảm rủi ro và cải thiện tình trạng mã

Chúng tôi sẽ cần xem tài liệu của thư viện đó để biết thông tin chi tiết về thư viện pytz. Chúng ta có thể bỏ qua API của nó bên ngoài tên múi giờ vì gấu trúc bao hàm chức năng của pytz

Tên múi giờ có thể được thiết lập tương tác và trong tài liệu

Trong [418]. nhập pytz

Trong [419]. pytz. common_timezones[-5. ]

Hết[419]. [‘Hoa Kỳ/Miền Đông’, ‘Hoa Kỳ/Hawaii’, ‘Hoa Kỳ/Núi’, ‘Hoa Kỳ/Thái Bình Dương’, ‘UTC’]

sử dụng pytz. múi giờ để bắt một đối tượng múi giờ từ pytz

Trong [420]. tz = pytz. múi giờ ['US/Eastern']

Trong [421]. tz

Ra [421]

Nội địa hóa và chuyển đổi

Theo mặc định, chuỗi thời gian trong gấu trúc là múi giờ ngây thơ. Nghiên cứu chuỗi thời gian dưới đây

rng = pd. date_range[‘3/9/2012 9. 30′, chu kỳ=6, tần số=’D’]

ts = Sê-ri [np. ngẫu nhiên. randn[len[rng]], index=rng]

Trường tz của chỉ mục là Không có

Trong [423]. in [ts. mục lục. tz]

Không có

Phạm vi ngày có thể được tạo với múi giờ được đặt

Trong [424]. pd. date_range [‘3/9/2012 9. 30′, chu kỳ=10, freq=’D’, tz=’UTC’]

Ra [424]

[2012-03-09 09. 30. 00,…, 2012-03-18 09. 30. 00]

Chiều dài. 10, thường xuyên. D, Múi giờ. UTC

Thay đổi từ ngây thơ sang bản địa hóa được xử lý bằng phương thức tz_localize

Trong [425]. ts_utc = ts. tz_localize ['UTC']

Trong [426]. ts_utc

Ra [426]

2012-03-09 09. 30. 00+00. 00 0. 414615

2012-03-10 09. 30. 00+00. 00 0. 427185

2012-03-11 09. 30. 00+00. 00 1. 172557

2012-03-12 09. 30. 00+00. 00 -0. 351572

2012-03-13 09. 30. 00+00. 00 1. 454593

2012-03-14 09. 30. 00+00. 00 2. 043319

tần số. Đ.

Trong [427]. ts_utc. mục lục

Ra [427]

[2012-03-09 09. 30. 00,…, 2012-03-14 09. 30. 00]

Chiều dài. 6, tần số. D, Múi giờ. UTC

Khi một chuỗi thời gian đã được bản địa hóa thành một múi giờ cụ thể, nó có thể được chuyển đổi thành một múi giờ khác bằng cách sử dụng tz_convert

Trong [428]. ts_utc. tz_convert ['Mỹ/Đông']

Ra [428]

2012-03-09 04. 30. 00-05. 00 0. 414615

2012-03-10 04. 30. 00-05. 00 0. 427185

2012-03-11 05. 30. 00-04. 00 1. 172557

2012-03-12 05. 30. 00-04. 00 -0. 351572

2012-03-13 05. 30. 00-04. 00 1. 454593

2012-03-14 05. 30. 00-04. 00 2. 043319

tần số. Đ.

Chúng tôi có thể bản địa hóa thành EST và chuyển đổi sang, chẳng hạn như giờ UTC hoặc giờ Berlin trong trường hợp chuỗi thời gian trên nằm giữa quá trình chuyển đổi DST trong múi giờ Hoa Kỳ/Miền Đông

Trong [429]. ts_đông = ts. tz_localize ['Mỹ/Đông']

Trong [430]. ts_đông. tz_convert['UTC']

Ra [430]

2012-03-09 14. 30. 00+00. 00 0. 414615

2012-03-10 14. 30. 00+00. 00 0. 427185

2012-03-11 13. 30. 00+00. 00 1. 172557

2012-03-12 13. 30. 00+00. 00 -0. 351572

2012-03-13 13. 30. 00+00. 00 1. 454593

2012-03-14 13. 30. 00+00. 00 2. 043319

tần số. Đ.

Trong [431]. ts_đông. tz_convert ['Châu Âu/Berlin']

Ra [431]

2012-03-09 15. 30. 00+01. 00 0. 414615

2012-03-10 15. 30. 00+01. 00 0. 427185

2012-03-11 14. 30. 00+01. 00 1. 172557

2012-03-12 14. 30. 00+01. 00 -0. 351572

2012-03-13 14. 30. 00+01. 00 1. 454593

2012-03-14 14. 30. 00+01. 00 2. 043319

tần số. Đ.

tz_localize và tz_convert cũng là các phương thức mẫu trên Datetime Index

Trong [432]. ts. mục lục. tz_localize['Châu Á/Thượng Hải']

Ra [432]

[2012-03-09 09. 30. 00… 2012-03-14 09. 30. 00]

Chiều dài. 6, tần số. D, Múi giờ. Châu Á/Thượng Hải

Để biết thêm chi tiết, hãy truy cập. https. //www. công nghệ công nghiệp4. com/2021/06/how-to-handle-time-zone-in-python. html

Dữ liệu múi giờ nên được xử lý như thế nào trong Python?

Vì vậy, để làm việc suôn sẻ với múi giờ, bạn nên sử dụng UTC làm múi giờ cơ sở . Để có được Giờ Phối hợp Quốc tế, tôi. e. Giờ UTC chúng ta chỉ cần truyền tham số vào hàm now[]. Để có được thời gian UTC, chúng ta có thể trực tiếp sử dụng 'pytz. utc' làm tham số cho hàm now[] dưới dạng 'now[pytz.

Múi giờ datetime của Python có nhận biết không?

Python có thư viện tích hợp sẵn, datetime, được sử dụng rộng rãi để xử lý dấu thời gian, nhưng nó không thực thi nhận thức múi giờ .

Thư viện Python nào được sử dụng cho múi giờ?

pytz đưa cơ sở dữ liệu Olson tz vào Python. 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 bằng Python 2. 4 hoặc cao hơn. Nó cũng 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, bạn có thể đọc thêm về vấn đề này trong Tham khảo thư viện Python [ datetime. tzinfo ].

Chủ Đề