Hướng dẫn python get local timezone name - python lấy tên múi giờ địa phương

Trong một dự án Python mà tôi đang thực hiện, tôi muốn có thể có được một tên múi giờ "có thể đọc được" của mẫu Mỹ/new_york, tương ứng với hệ thống timezone địa phương, để hiển thị cho người dùng. Mỗi đoạn mã tôi đã thấy truy cập thông tin múi giờ chỉ trả về một phần bù số (-0400) hoặc mã chữ cái (EDT) hoặc đôi khi cả hai. Có một số thư viện Python có thể truy cập thông tin này, hoặc nếu không, hãy chuyển đổi mã bù/chữ cái thành một tên có thể đọc được của con người?America/New_York, corresponding to the system local timezone, to display to the user. Every piece of code I've seen that accesses timezone information only returns either a numeric offset (-0400) or a letter code (EDT) or sometimes both. Is there some Python library that can access this information, or if not that, convert the offset/letter code into a human-readable name?

Nếu có nhiều hơn một tên có thể đọc được của con người tương ứng với một múi giờ cụ thể, hoặc là danh sách các kết quả có thể hoặc bất kỳ một trong số đó là tốt và nếu không có tên có thể đọc được của con người tương ứng với múi giờ hiện tại, tôi sẽ lấy hoặc là một ngoại lệ hoặc None hoặc [] hoặc bất cứ điều gì.


Làm rõ: Tôi không nhớ chính xác những gì tôi đã nghĩ đến khi ban đầu tôi viết câu hỏi này, nhưng tôi nghĩ những gì tôi thực sự muốn là một cách để biến một múi giờ thành một cái tên có thể đọc được của con người. Tôi không nghĩ rằng câu hỏi này có ý nghĩa tập trung vào làm thế nào để có được hệ thống timezone địa phương một cách cụ thể, nhưng đối với trường hợp sử dụng cụ thể mà tôi có trong tâm trí, điều đó đã xảy ra rằng timezone địa phương là vấn đề tôi muốn. Tôi không chỉnh sửa một chút về timezone địa phương ra khỏi câu hỏi vì có những câu trả lời tập trung vào cả hai khía cạnh.

Hỏi ngày 15 tháng 8 năm 2010 lúc 20:47Aug 15, 2010 at 20:47

Hướng dẫn python get local timezone name - python lấy tên múi giờ địa phương

David Zdavid zDavid Z

125K26 Huy hiệu vàng249 Huy hiệu bạc275 Huy hiệu Đồng26 gold badges249 silver badges275 bronze badges

1

Sau đây tạo ra một lần giảm thời gian ánh xạ DefaultDICT (ví dụ: '-0400') và chữ viết tắt (ví dụ: 'EDT') cho các tên múi giờ địa lý phổ biến (ví dụ: 'America/new_york').


import os
import dateutil.tz as dtz
import pytz
import datetime as dt
import collections

result = collections.defaultdict(list)
for name in pytz.common_timezones:
    timezone = dtz.gettz(name)
    now = dt.datetime.now(timezone)
    offset = now.strftime('%z')
    abbrev = now.strftime('%Z')
    result[offset].append(name)
    result[abbrev].append(name)

for k, v in result.items():
    print(k, v)

Lưu ý rằng các chữ viết tắt thời gian có thể có ý nghĩa rất khác nhau. Ví dụ, 'EST' có thể đứng cho thời gian mùa hè phương Đông (UTC+10) ở Úc hoặc Giờ chuẩn phương Đông (UTC-5) ở Bắc Mỹ.

Ngoài ra, các phạm vi và chữ viết tắt có thể thay đổi đối với các khu vực sử dụng thời gian tiêu chuẩn ánh sáng ban ngày. Vì vậy, tiết kiệm cho dict tĩnh có thể không cung cấp tên múi giờ chính xác 365 ngày một năm.

Jayrizzo

2.8023 huy hiệu vàng31 Huy hiệu bạc42 Huy hiệu đồng3 gold badges31 silver badges42 bronze badges

Đã trả lời ngày 16 tháng 8 năm 2010 lúc 12:47Aug 16, 2010 at 12:47

UnutbuUnutbuunutbu

804K173 Huy hiệu vàng1728 Huy hiệu bạc1628 Huy hiệu đồng173 gold badges1728 silver badges1628 bronze badges

1

Tôi muốn có thể có được một tên múi giờ "có thể đọc được" của mẫu Mỹ/new_york, tương ứng với hệ thống timezone cục bộ, để hiển thị cho người dùng.

Có mô -đun

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
0 trả về đối tượng
#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
1 TZINFO (trước phiên bản
#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
2) tương ứng với hệ thống timezone cục bộ của hệ thống:

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago

Để trả lời câu hỏi trong tiêu đề (cho những người từ Google), bạn có thể sử dụng

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
3 để in thông tin múi giờ địa phương:

#!/usr/bin/env python
import time

print(time.strftime('%Z%z'))

# Example Results:
# -> MSK+0300 
# -> CDT-0500

Nó in dấu chữ theo thời gian hiện tại và độ lệch UTC tương ứng với múi giờ địa phương của bạn.

Jayrizzo

2.8023 huy hiệu vàng31 Huy hiệu bạc42 Huy hiệu đồng3 gold badges31 silver badges42 bronze badges

Đã trả lời ngày 16 tháng 8 năm 2010 lúc 12:47Jan 29, 2016 at 14:14

UnutbuUnutbujfs

804K173 Huy hiệu vàng1728 Huy hiệu bạc1628 Huy hiệu đồng183 gold badges949 silver badges1624 bronze badges

3

Tôi muốn có thể có được một tên múi giờ "có thể đọc được" của mẫu Mỹ/new_york, tương ứng với hệ thống timezone cục bộ, để hiển thị cho người dùng.

Có mô -đun

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
0 trả về đối tượng
#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
1 TZINFO (trước phiên bản
#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
2) tương ứng với hệ thống timezone cục bộ của hệ thống:Aug 15, 2010 at 20:54

Để trả lời câu hỏi trong tiêu đề (cho những người từ Google), bạn có thể sử dụng

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
3 để in thông tin múi giờ địa phương:Amber

Nó in dấu chữ theo thời gian hiện tại và độ lệch UTC tương ứng với múi giờ địa phương của bạn.81 gold badges618 silver badges546 bronze badges

4

Đã trả lời ngày 29 tháng 1 năm 2016 lúc 14:14

>>> eastern = timezone('US/Eastern')
>>> eastern.zone
'US/Eastern'

JFSJFS

>>> import datetime, pytz
>>> todaynow = datetime.datetime.now(tz=pytz.timezone('US/Hawaii'))
>>> todaynow.tzinfo # turned into a string, it can be split/parsed

>>> todaynow.strftime("%Z")
'HST'
>>> todaynow.tzinfo.zone
'US/Hawaii'

385K183 Huy hiệu vàng949 Huy hiệu bạc1624 Huy hiệu đồng

http://pytz.sourceforge.net/ có thể giúp đỡ. Nếu không có gì khác, bạn có thể lấy một danh sách tất cả các múi giờ và sau đó lặp lại cho đến khi bạn tìm thấy một bản phù hợp với phần bù của bạn.Oct 30, 2019 at 20:41

Đã trả lời ngày 15 tháng 8 năm 2010 lúc 20:54ingyhere

Amberamber3 gold badges37 silver badges47 bronze badges

1

491K81 Huy hiệu vàng618 Huy hiệu bạc546 Huy hiệu đồng

import os
import os.path
import sys 

def main(argv):
  tzname = os.environ.get('TZ')
  if tzname:
    print tzname
  elif os.path.exists('/etc/timezone'):
    print file('/etc/timezone').read()
  else:
    sys.exit(1)

if __name__ == '__main__':
  main(sys.argv)

Điều này có thể không xuất hiện khi câu hỏi này được viết ban đầu, nhưng đây là một đoạn trích để có được chỉ định chính thức múi giờ:

Hơn nữa, điều này có thể được sử dụng với một đối tượng DateTime không có lỗi (hay còn gọi là DateTime trong đó thời gian thực tế đã được đặt bằng cách sử dụng

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
4 hoặc
#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
5 như sau:Jul 30, 2012 at 4:20

Tất nhiên, đây là sự sửa đổi của những người dùng công cụ tìm kiếm đã hạ cánh ở đây. ... Xem thêm tại trang web mô -đun PYTZ.poolie

Đã trả lời ngày 30 tháng 10 năm 2019 lúc 20:411 gold badge46 silver badges73 bronze badges

ingyhereingyhere

py> from dateutil.tz import *
py> ny = gettz('America/New York')
py> ny._filename
'/usr/share/zoneinfo/America/New_York'
py> ny._filename.split('/', 4)[-1]
'America/New_York'

Huy hiệu vàng 11K337 Huy hiệu bạc47 Huy hiệu đồngAug 16, 2010 at 0:53

2

Nếu bạn chỉ muốn theo nghĩa đen những gì bạn yêu cầu, "Tên múi giờ của mẫu Mỹ/new_york, tương ứng với hệ thống timezone địa phương" và nếu bạn chỉ quan tâm đến Linux (và tương tự), thì điều này sẽ làm công việc:

from tzlocal import get_localzone

current_timezone = get_localzone()
zone = current_timezone.zone
print(zone)  

Tất nhiên sẽ tốt hơn nếu có một thư viện gói gọn điều này theo cách sạch hơn và có lẽ xử lý các trường hợp khác mà bạn đề cập trong các bình luận như đã có đối tượng

#!/usr/bin/env python
import tzlocal  # $ pip install tzlocal

# display "human-readable" name (tzid)
print(tzlocal.get_localzone_name())

# Example Results:
# -> Europe/Moscow
# -> America/Chicago
6. Tôi nghĩ bạn có thể làm điều đó với Pytz được Amber đề cập nhưng không rõ ràng với tôi như thế nào ...Feb 6, 2020 at 13:23

Hướng dẫn python get local timezone name - python lấy tên múi giờ địa phương

Đã trả lời ngày 30 tháng 7 năm 2012 lúc 4:20

PooliepoolieFeb 18 at 17:32

Hướng dẫn python get local timezone name - python lấy tên múi giờ địa phương

2

Làm thế nào để tôi có được timezone địa phương trong Python?

Bạn có thể nhận thời gian hiện tại trong một múi giờ cụ thể bằng cách sử dụng mô -đun DateTime với một mô -đun khác có tên là PYTZ. Sau đó, bạn có thể kiểm tra tất cả các múi giờ có sẵn với đoạn trích bên dưới: từ DateTime Nhập DateTime Nhập PYTZ ZONES = PYTZ. all_timezones in (vùng) # Đầu ra: Tất cả các múi giờ của thế giới.using the datetime module with another module called pytz . You can then check for all available timezones with the snippet below: from datetime import datetime import pytz zones = pytz. all_timezones print(zones) # Output: all timezones of the world.

Làm thế nào để tôi có được tất cả các múi giờ trong Python?

Sử dụng thuộc tính pytz.all_timezones để có được danh sách thời gian có sẵn trên thế giới.Có một thuộc tính khác trả về một bộ thời gian thay vì một danh sách. all_timezones attribute to get the list of available timezone in the world. There is another attribute that returns a set of timezones instead of a list.

Tzinfo ở Python là gì?

Tzinfo là một lớp cơ sở trừu tượng.Nó không thể được khởi tạo trực tiếp.Một lớp con cụ thể phải lấy nó và thực hiện các phương pháp được cung cấp bởi lớp trừu tượng này.Thể hiện của lớp TZINFO có thể được chuyển cho các hàm tạo của các đối tượng DateTime và thời gian.an abstract base class. It cannot be instantiated directly. A concrete subclass has to derive it and implement the methods provided by this abstract class. The instance of the tzinfo class can be passed to the constructors of the datetime and time objects.

Làm thế nào để tôi có được pytz trong python?

Nhập "CMD" vào thanh tìm kiếm và nhấn Enter để mở dòng lệnh.Cái này là cái gì?Loại PIP PIP Cài đặt Pytz (không có dấu ngoặc kép) trong dòng lệnh và nhấn lại Enter.Điều này cài đặt PYTZ cho cài đặt Python mặc định của bạn.Type “ pip install pytz ” (without quotes) in the command line and hit Enter again. This installs pytz for your default Python installation.