【问题标题】:How to get all the timezones date in order by python如何通过python按顺序获取所有时区日期
【发布时间】:2020-06-05 12:29:59
【问题描述】:

我创建了这个循环来给出所有时区:

import datetime
import pytz

today=datetime.datetime.now(tz=pytz.UTC)
for i in pytz.all_timezones:
    print(today.astimezone(pytz.timezone(i)))

但我想按 -9 到 +14 的顺序排列它们

【问题讨论】:

    标签: python timezone python-datetime


    【解决方案1】:
    now = datetime.datetime.now()
    tzs = sorted(pytz.all_timezones, key=lambda tz: pytz.timezone(tz).utcoffset(now))
    

    这会给你一个类似的列表:

    ['Etc/GMT+12',
     'Etc/GMT+11',
     'Pacific/Midway',
     'Pacific/Niue',
     'Pacific/Pago_Pago',
     'Pacific/Samoa',
     'US/Samoa',
     'Etc/GMT+10',
     'HST',
     'Pacific/Honolulu',
     ...]
    

    【讨论】:

      【解决方案2】:

      假设您只对 GMT 时区感兴趣...

      from datetime import datetime
      from pytz import UTC, all_timezones, timezone, UnknownTimeZoneError
      
      now = datetime.now(tz=UTC)
      
      print('Timezones should be similar to these...')
      timezones_candidates = [tz for tz in all_timezones if 'GMT' in tz]
      print(timezones_candidates)
      
      first = -14
      last = +9
      desired_timezones = ['Etc/GMT{0:+}'.format(shift) for shift in range(first, last+1)] 
      
      print('\nNow as timezone:')
      for tz in desired_timezones:
        try:  
          print(now.astimezone(timezone(tz)))
      
        except UnknownTimeZoneError:
          print('The timezone {0} doesnt exist'.format(tz))
      

      【讨论】:

        【解决方案3】:
        import datetime
        import pytz
        
        today=datetime.datetime.now(tz=pytz.UTC)
        ordered = {}
        for i in pytz.all_timezones:
          timezone = today.astimezone(pytz.timezone(i))
          gmt = str(timezone)[-6:-3]
          gmt = (-1 if gmt[0] == '-' else 1) * int(gmt[1:])
          ordered[pytz.timezone(i)] = gmt
        for timezone, _ in sorted(ordered.items(), key=lambda item: item[1]):
          print(today.astimezone(timezone))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-10
          • 2016-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-17
          相关资源
          最近更新 更多