Python xử lý múi giờ như thế nào?
Đối với người dùng Windows như tôi, lớp ZoneInfo có thể không hoạt động. Nhập nội dung nào đó như Show Theo Python,
Giải pháp là sử dụng pip để cài đặt 'tzdata' trước khi làm việc với lớp ZoneInfo jamesbrown68 trên Đăng, xin lỗi. Tôi đã đưa ra nhận xét của mình trước khi thấy bạn xử lý cơ sở dữ liệu IANA bị thiếu trong video của mình. Lấy làm tiếc raulfz trên Tôi đã thử xem có gì trong zoneinfo. available_timezones() và tôi gặp lỗi khi thông báo 'zoneinfo' không được xác định. Tuy nhiên, tôi đã nhập nó. Ai đó có thể chỉ cho tôi vấn đề là gì không? Bartosz Zaczyński Nhóm RP trên @raulfz Bạn có chắc là mình đang chạy Python 3 không. 9? . Bạn có phiền khi chia sẻ nó không? raulfz trên Xin chào, cảm ơn rất nhiều vì phản hồi của bạn. Tôi không nhận ra rằng mình vừa nhập chức năng TimeZone chứ không phải toàn bộ mô-đun múi giờ, đó là vấn đề Tôi đã làm theo mã video chính xác như được hiển thị
thay vì viết
Tôi có thể đã nhận ra điều gì khi gọi điện cho Tốt nhất, R Christopher Trudeau Nhóm RP trên Xin chào @raulfz, Bạn đúng. Có vẻ như tôi đã bỏ lỡ một dòng khi tôi sao chép nó vào bản trình bày. Tôi sẽ vá nó để tránh nhầm lẫn trong tương lai. Xin lỗi vì điều đó raulfz trên Không có vấn đề gì cả, thực ra tôi nên suy luận nó bằng cách lưu ý rằng bạn đang gọi phương thức trên đối tượng zoneinfo chứ không phải trên ZoneInfo. Dù sao, cảm ơn bạn đã dành thời gian Làm việc với ngày và giờ có thể phức tạp, đặc biệt là khi xử lý chuyển đổi múi giờ. Hướng dẫn này sẽ cung cấp tổng quan về mô-đun ngày giờ của Python, nhấn mạnh vào các chức năng liên quan đến múi giờ sở thích Được đăng trong những sở thích này Đặt mua con trăn h/python • 67 hướng dẫn 1 Đầu tiên, nếu bạn đã thấy datetime được sử dụng trong Python, bạn sẽ nhận thấy rằng nó vừa là tên của mô-đun vừa là một trong nhiều lớp bên trong mô-đun. Vì vậy, mô-đun datetime có thể được nhập như thế này
Hoặc bạn có thể chỉ cần nhập các lớp ngày giờ mà bạn quan tâm
Một đối tượng datetime là một thể hiện của datetime. lớp datetime đại diện cho một thời điểm duy nhất. Nếu bạn đã quen thuộc với lập trình hướng đối tượng, một đối tượng datetime được tạo bằng cách khởi tạo lớp datetime với một ngày tháng Một cách dễ dàng để lấy đối tượng datetime là sử dụng datetime. Hiện nay
Như bạn có thể thấy, phương thức now trả về một đối tượng datetime đại diện cho thời điểm mà now được gọi Bạn cũng có thể tạo một đối tượng ngày giờ bằng cách chỉ định ngày bạn muốn biểu thị. Tối thiểu, việc khởi tạo ngày giờ yêu cầu ít nhất 3 đối số - năm, tháng và ngày Hãy khởi tạo ngày sinh nhật của tôi
Từ đây, chúng ta sẽ nói về thao tác, định dạng và thực hiện chuyển đổi múi giờ trên các đối tượng ngày giờ 2 Theo tài liệu, "trọng tâm của việc triển khai [của thư viện datetime] là trích xuất thuộc tính hiệu quả để định dạng và thao tác đầu ra". Vì vậy, chúng tôi sẽ thảo luận về việc trích xuất các thuộc tính và định dạng ngày tháng Đối với ví dụ này, chúng tôi sẽ chọn một ngày ngẫu nhiên
Có nhiều trường hợp chúng ta muốn định dạng một đối tượng ngày giờ theo một cách cụ thể. Đối với điều này, phương pháp strftime rất tiện dụng. Phương pháp này cho phép bạn in một chuỗi được định dạng bằng một loạt các lệnh định dạng. Điều này được hiểu rõ nhất với các ví dụ
Như bạn hy vọng có thể nói, cùng một đối tượng ngày giờ được sử dụng để tạo từng định dạng ngày. Định dạng được chỉ định bằng cách sử dụng các chỉ thị định dạng khác nhau. Ví dụ: %Y tương ứng với năm có đủ bốn chữ số, trong khi %m tương ứng với số thập phân có hai chữ số biểu thị tháng. Xem danh sách đầy đủ các chỉ thị định dạng Cũng có thể truy cập trực tiếp các thuộc tính khác nhau của đối tượng datetime ________số 8_______Khi thảo luận về định dạng, bạn nên làm quen với ISO 8601, đây là một tiêu chuẩn quốc tế để trình bày ngày và giờ. Python có một phương pháp để nhanh chóng tạo ngày/giờ được định dạng theo tiêu chuẩn ISO 8601
Bây giờ chúng ta sẽ thảo luận về mặt trái của strftime, đó là strptime. Đây là nơi bạn tạo một đối tượng ngày giờ từ một chuỗi. Nhưng vì chuỗi có thể được định dạng theo bất kỳ cách nào, nên cần phải cho datetime biết định dạng mong đợi. Sử dụng cùng một bộ chỉ thị định dạng, chúng ta có thể chuyển vào một chuỗi và định dạng dự kiến để tạo một đối tượng ngày giờ
Lưu ý cách mẫu khớp chính xác với chuỗi. Nếu bạn sử dụng một chỉ thị định dạng hoặc ngày không hợp lý, nó sẽ đưa ra một ngoại lệ 3 Cho đến nay, việc khởi tạo và định dạng các đối tượng ngày giờ khá dễ dàng. Tuy nhiên, múi giờ thêm một chút phức tạp vào phương trình ngây thơ vs nhận thứcCho đến nay chúng ta chỉ xử lý các đối tượng datetime ngây thơ. Điều đó có nghĩa là đối tượng ngây thơ với bất kỳ loại múi giờ nào. Vì vậy, một đối tượng datetime có thể được bù ngây thơ hoặc nhận biết bù Độ lệch của múi giờ đề cập đến số giờ múi giờ tính từ Giờ phối hợp quốc tế (UTC) Một đối tượng datetime ngây thơ không chứa thông tin múi giờ. Cách dễ nhất để biết một đối tượng datetime có ngây thơ hay không là kiểm tra tzinfo. tzinfo sẽ được đặt thành Không có đối tượng nào ngây thơ
Để nhận biết đối tượng datetime, bạn có thể sử dụng thư viện pytz. Trước tiên, bạn phải khởi tạo một đối tượng múi giờ, sau đó sử dụng đối tượng múi giờ đó để "bản địa hóa" một đối tượng ngày giờ. Bản địa hóa chỉ đơn giản là cung cấp thông tin múi giờ của đối tượng 0Một đối tượng datetime ngây thơ bị giới hạn ở chỗ nó không thể định vị chính nó trong mối quan hệ với các đối tượng datetime đã biết. Ví dụ 1Khi xử lý các đối tượng datetime, tôi đã bắt gặp hai lời khuyên mà tôi thường đồng ý. Đầu tiên, luôn luôn sử dụng các đối tượng datetime "nhận biết". Và thứ hai, luôn làm việc ở UTC và thực hiện chuyển đổi múi giờ là bước cuối cùng Cụ thể hơn, như được chỉ ra bởi người dùng jarhwah trên reddit, bạn nên lưu trữ thời gian ở dạng UTC và chuyển đổi trên màn hình Khi bạn đã quen thuộc với các đối tượng ngày giờ nhận biết, việc chuyển đổi múi giờ tương đối dễ dàng. Hãy tạo một đối tượng ngày giờ với múi giờ UTC và chuyển đổi nó thành Tiêu chuẩn Thái Bình Dương 2Vì vậy, pst_now và utc_now là các đối tượng ngày giờ khác nhau với các múi giờ khác nhau, nhưng chúng bằng nhau. Để chắc chắn, chúng ta có thể in thời gian của mỗi 34 Thường thì chúng ta sẽ làm việc với nhiều đối tượng ngày giờ và chúng ta sẽ muốn so sánh chúng. Lớp timedelta rất hữu ích để tìm sự khác biệt giữa hai ngày hoặc thời gian. Trong khi các đối tượng datetime biểu thị một thời điểm, thì các đối tượng timedelta biểu thị một khoảng thời gian, như 5 ngày hoặc 10 giây Giả sử tôi muốn biết chính xác tôi hơn anh trai bao nhiêu tuổi. Tôi sẽ tạo đối tượng datetime cho mỗi chúng ta đại diện cho ngày và giờ sinh của chúng ta 4Vì chúng tôi muốn làm việc với các đối tượng nhận biết bù trừ, chúng tôi sẽ thêm thông tin múi giờ 5Để xem tôi lớn hơn anh trai tôi bao nhiêu tuổi, chúng ta chỉ cần trừ hai đối tượng ngày giờ. Và để xem câu trả lời theo cách mà con người có thể đọc được, chúng ta có thể in ra sự khác biệt một cách đơn giản 6Biến diff thực sự là một đối tượng timedelta trông giống như datetime này. múi giờ(2440, 2100) Trừ một đối tượng datetime khỏi một đối tượng khác sẽ tạo ra một đối tượng timedelta, vì vậy, như bạn có thể nghi ngờ, trừ một đối tượng timedelta khỏi một đối tượng datetime sẽ tạo ra một đối tượng datetime 7Tất nhiên điều này cũng đúng với phép cộng Điều này hữu ích để trả lời các câu hỏi như "3 tuần trước kể từ ngày hôm qua là ngày nào?" Để trả lời câu hỏi thứ hai, chúng ta cần có hai thứ - thứ nhất, đối tượng datetime đại diện cho ngày hôm nay và thứ hai, đối tượng timedelta đại diện cho 90 ngày 8Sau đó, chúng ta có thể chỉ cần làm phép tính 9Và vì chúng tôi muốn biết ngày trong tuần, chúng tôi có thể sử dụng strftime 05 Ngày và giờ có thể phức tạp, nhưng lớp datetime của Python sẽ giúp mọi thứ dễ dàng hơn một chút. Hy vọng rằng bạn tìm thấy hướng dẫn này là hữu ích. Nếu bạn nghĩ rằng có bất kỳ ví dụ hoặc chủ đề cơ bản nào khác liên quan đến các đối tượng ngày giờ và múi giờ, vui lòng bình luận bên dưới và tôi sẽ cố gắng thêm chúng vào hướng dẫn Chia sẻ FacebookRedditTwitterPinterestEmailText message Yêu thích TIẾP THEO Cách sử dụng Blender để tạo mô hình 3D Tìm hiểu các ABC của XYZ Tro tàn (362)Ngày 24 tháng 6 năm 2022 0Blender là một công cụ nguồn mở tuyệt vời dành cho các nhà sản xuất, họa sĩ hoạt hình, nghệ sĩ và những người khác muốn mở rộng khả năng sáng tạo của họ với thế giới mô hình 3d Dữ liệu múi giờ nên được xử lý như thế nào trong Python?Tham số pytz. múi giờ cho phép chúng tôi chỉ định thông tin múi giờ dưới dạng chuỗi . Chúng tôi có thể chuyển vào bất kỳ múi giờ có sẵn nào và sẽ nhận được thời gian ngày hiện tại của múi giờ đó và nó cũng sẽ in phần bù đối với UTC. Tôi. e. , chênh lệch giữa múi giờ UTC(+00. 00) và múi giờ đã chỉ định.
Múi giờ datetime của Python có nhận biết không?Các đối tượng nhận biết múi giờ là các đối tượng Ngày giờ hoặc thời gian của Python bao gồm thông tin múi giờ . Một đối tượng nhận thức đại diện cho một thời điểm cụ thể không thể giải thích được.
Python sử dụng thư viện nào cho các 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 mơ hồ 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 ). |