Làm cách nào để sử dụng múi giờ datetime trong python?

Cách dễ nhất trong ngày và giờ Python để xử lý các múi giờ là sử dụng mô-đun pytz. 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. pytz đưa cơ sở dữ liệu Olson tz vào Python. 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]

Trước khi sử dụng, bạn sẽ cần cài đặt nó bằng cách sử dụng -

pip install pytz

Phương pháp 1. Sử dụng hàm astimezone[]

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn -

  • Sử dụng từ khóa nhập, để nhập ngày giờ [Để làm việc với ngày và giờ, Python có một mô-đun gọi là mô-đun datetime]

  • Sử dụng từ khóa nhập để nhập múi giờ từ mô-đun pytz

  • Nhập định dạng ngày tháng dưới dạng chuỗi bằng hàm input[] và tạo một biến để lưu trữ

  • Lấy thời gian hiện tại bằng cách sử dụ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ó

  • Chuyển đổi thời gian trên sang múi giờ khác bằng datetime. hàm astimezone[] [Datetime. astimezone[] được sử dụng để sửa đổi các đối tượng của lớp datetime trong mô-đun datetime] bằng cách chuyển một múi giờ mới làm đối số cho nó

  • Định dạng DateTime đã chuyển đổi ở trên bằng cách sử dụng strftime[] và in nó

Ví dụ

Chương trình sau trả về thời gian hiện tại sau khi được chuyển đổi sang múi giờ khác bằng cách sử dụng hàm astimezone[]−

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

Current Time in UTC TimeZone: 2022-09-07 04:23:21 UTC+0000
Current Time in Asia/Kolkata TimeZone: 2022-09-07 09:53:21 IST+0530

Phương pháp 2. Sử dụng ngày giờ. hàm now[]

Thuật toán [Các bước]

Sau đây là Thuật toán/các bước cần tuân thủ để thực hiện tác vụ mong muốn -

  • Sử dụng từ khóa nhập, để nhập ngày giờ [Để làm việc với ngày và giờ, Python có một mô-đun gọi là mô-đun datetime]

  • Sử dụng từ khóa nhập để nhập múi giờ từ mô-đun pytz

  • Đặt định dạng ngày giờ dưới dạng chuỗi và lưu trữ nó trong một biến

  • Lấy múi giờ châu Á/Kolkata tiêu chuẩn bằng cách sử dụng hàm timezone[] [lấy múi giờ của một vị trí cụ thể] của mô-đun pytz bằng cách chuyển múi giờ châu Á/Kolkata làm đối số cho nó và lưu kết quả vào một biến

  • Nhận múi giờ chuẩn của Hoa Kỳ/Miền Đông bằng cách sử dụng hàm timezone[] của mô-đun pytz bằng cách chuyển múi giờ của Hoa Kỳ/Miền Đông làm đối số cho nó và lưu kết quả vào một biến

  • Lấy thời gian hiện tại bằng cách sử dụng datetime. now[] [trả về ngày giờ địa phương hiện tại] và chuyển múi giờ đầu tiên ở trên i. e đối tượng múi giờ châu Á/kolkata làm đối số cho nó [Ở đây nó chuyển đổi ngày và giờ hiện tại thành múi giờ châu Á/kolkata]

  • Sử dụng hàm strftime[] [trả về một chuỗi đại diện cho đối tượng ngày giờ dựa trên mã định dạng] để định dạng đối tượng ngày giờ ở trên và in nó

strftime[format]
  • Lấy thời gian hiện tại bằng cách sử dụng datetime. now[] và chuyển múi giờ thứ hai ở trên i. e Múi giờ 'US/Eastern' làm đối số cho nó [Ở đây nó chuyển đổi ngày và giờ hiện tại thành múi giờ 'US/Eastern']

  • Sử dụng hàm strftime[] để định dạng đối tượng datetime ở trên và in ra

Ví dụ

Chương trình sau trả về thời gian hiện tại sau khi được chuyển đổi sang múi giờ khác bằng cách sử dụng hàm astimezone[]−

đầu ra

Khi thực thi, chương trình trên sẽ tạo đầu ra sau -

Original Date & Time: in Asia/Kolkata 2022-09-07 10:00:49 IST+0530
Converted Date & Time: in US/Eastern TimeZone 2022-09-07 00:30:49 EDT-0400

Phần kết luận

Chúng ta đã học cách chuyển đổi ngày và giờ với các múi giờ khác nhau trong Python trong bài viết này. Hàm timedelta[] được sử dụng để lấy đối tượng múi giờ. Chúng tôi đã học cách sử dụng ngày giờ. now[] để lấy ngày giờ hiện tại. Chúng ta cũng đã học cách sử dụng hàm strftime[] để định dạng đối tượng datetime

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

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
7 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 giá trị 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

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
8 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

  • Timezone naive: 2021-07-09 13:22:02.256978
    Timezone Aware: 2021-07-09 07:52:02.256978+00:00
    US Central DateTime 2021-07-09 02:52:02.313026-05:00
    9. Nhận múi giờ UTC tiêu chuẩn
  • from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    0. Tạo đối tượng múi giờ của một khu vực cụ thể
  • from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    1. 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
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    2
  • Sử dụng hàm
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    3 để tạo đối tượng múi giờ
  • Sử dụng hàm
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    4 hoặc
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    5 để tạo múi giờ nhận biết ngày giờ hiện tại

Ví dụ

Current Time in UTC TimeZone: 2022-09-07 04:23:21 UTC+0000
Current Time in Asia/Kolkata TimeZone: 2022-09-07 09:53:21 IST+0530
3

đầu ra

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
  • Để có được thời gian UTC, chúng tôi đã sử dụng
    Timezone naive: 2021-07-09 13:22:02.256978
    Timezone Aware: 2021-07-09 07:52:02.256978+00:00
    US Central DateTime 2021-07-09 02:52:02.313026-05:00
    9 làm tham số cho hàm
    Timezone naive: 2021-07-09 13:22:02.256978
    Timezone Aware: 2021-07-09 07:52:02.256978+00:00
    US Central DateTime 2021-07-09 02:52:02.313026-05:00
    8. 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

from datetime import datetime
import pytz

unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
print['Timezone naive:', unaware]

# Convert unaware Datetime to UTC timezone aware Datetime
aware = unaware.replace[tzinfo=pytz.UTC]
print[aware]

Ghi chú. Phương thức

from datetime import datetime
import pytz

unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
print['Timezone naive:', unaware]

# Convert unaware Datetime to UTC timezone aware Datetime
aware = unaware.replace[tzinfo=pytz.UTC]
print[aware]
8 trả về phiên bản
from datetime import datetime
import pytz

unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
print['Timezone naive:', unaware]

# Convert unaware Datetime to UTC timezone aware Datetime
aware = unaware.replace[tzinfo=pytz.UTC]
print[aware]
9 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ị

strftime[format]
00 để lấy tên múi giờ

strftime[format]
0

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

Tạo TimeZone Aware Datetime Object Sử dụng lớp timezone

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

from datetime import datetime
import pytz

unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
print['Timezone naive:', unaware]

# Convert unaware Datetime to UTC timezone aware Datetime
aware = unaware.replace[tzinfo=pytz.UTC]
print[aware]
9 nhận biết múi giờ mà không cần pytz

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

strftime[format]
02, lớp này lại là lớp con của lớp cơ sở trừu tượng
strftime[format]
03. 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

from datetime import datetime
import pytz

unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
print['Timezone naive:', unaware]

# Convert unaware Datetime to UTC timezone aware Datetime
aware = unaware.replace[tzinfo=pytz.UTC]
print[aware]
9 nhận biết UTC bằng cách gán
strftime[format]
05

cú pháp

strftime[format]
7

Ở đây

strftime[format]
06 đạ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ụ

strftime[format]
9

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

strftime[format]
07

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

Original Date & Time: in Asia/Kolkata 2022-09-07 10:00:49 IST+0530
Converted Date & Time: in US/Eastern TimeZone 2022-09-07 00:30:49 EDT-0400
1

bước

  • Sử dụng hàm
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    3 để tạo đối tượng múi giờ
  • Sử dụng hàm
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    4 để 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ỳ

Original Date & Time: in Asia/Kolkata 2022-09-07 10:00:49 IST+0530
Converted Date & Time: in US/Eastern TimeZone 2022-09-07 00:30:49 EDT-0400
4

đầu ra

Original Date & Time: in Asia/Kolkata 2022-09-07 10:00:49 IST+0530
Converted Date & Time: in US/Eastern TimeZone 2022-09-07 00:30:49 EDT-0400
5

Múi giờ khác

Original Date & Time: in Asia/Kolkata 2022-09-07 10:00:49 IST+0530
Converted Date & Time: in US/Eastern TimeZone 2022-09-07 00:30:49 EDT-0400
6

đầu ra

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
0

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

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
7 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ờ. –

  • strftime[format]
    
    71. Trả về tên múi giờ tương ứng với đối tượng 
    from datetime import datetime
    import pytz
    
    unaware = datetime[2021, 6, 15, 8, 45, 17, 5]
    print['Timezone naive:', unaware]
    
    # Convert unaware Datetime to UTC timezone aware Datetime
    aware = unaware.replace[tzinfo=pytz.UTC]
    print[aware]
    strftime[format]
    
    73. Phương thức này trả về tên được sử dụng trong khi tạo đối tượng múi giờ
  • strftime[format]
    
    74. 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 độ lệch 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]
  • strftime[format]
    
    75. 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ề
    strftime[format]
    
    76. Thông tin dst đã là một phần của utcoffset, do đó, t
    strftime[format]
    
    77 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ụ

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
1

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

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
2

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

strftime[format]
02, lớp này lại là lớp con của lớp cơ sở trừu tượng 
strftime[format]
03

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

Sử dụng phương pháp

strftime[format]
90 để 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

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
3

đầu ra

Timezone naive: 2021-07-09 13:22:02.256978
Timezone Aware: 2021-07-09 07:52:02.256978+00:00
US Central DateTime 2021-07-09 02:52:02.313026-05:00
4

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 instance datetime đã biết với giá trị múi giờ được đặt thành giá trị chuẩn hóa 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

strftime[format]
91 có tên là
strftime[format]
92[]. 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ờ
strftime[format]
93 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,

strftime[format]
03 có một phương thức gọi là
strftime[format]
95 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 để đặt múi giờ trong datetime Python?

Đối tượng nhận biết múi giờ sử dụng datetime . time[] chức năng của mô-đun datetime. Sau đó, chúng ta sẽ thay thế giá trị của múi giờ trong lớp tzinfo của đối tượng bằng cách sử dụng hàm replace[] . Sau đó, chuyển đổi giá trị ngày sang định dạng ISO 8601 bằng phương thức isoformat[].

Datetime có múi giờ Python không?

Datetime của Python. đối tượng datetime có thuộc tính tzinfo có thể được sử dụng để lưu trữ thông tin múi giờ , được biểu diễn dưới dạng một thể hiện của lớp con của datetime. tzinfo.

Làm cách nào để sử dụng múi giờ trong Python?

Vì vậy, để làm việc với múi giờ một cách suôn sẻ, bạn nên sử dụng UTC làm múi giờ cơ sở của mình. Để 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

Làm cách nào để đặt ngày giờ thành UTC 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 đó.

Chủ Đề