Преобразование часового пояса datetime.time

Я пишу код Python, используя библиотеку стрелок для преобразования часового пояса (который по умолчанию будет UTC) в строке (без даты) в другой часовой пояс.

Пример строкового значения: 18:30+0000

Фрагмент кода:

      start      = '18:30+0000'
start_time = arrow.get(start,'hh:mmZ')

print(start_time.format('hh:mm A ZZ'))

print(start_time.to('Australia/Melbourne').format('hh:mm A ZZ'))
# This should print 05:30 AM +11:00 - but showing 04:09 AM +09:39

Я также пытался преобразовать в другие часовые пояса.

      print(start_time.to('Europe/London').format('hh:mm A ZZ'))
# This should print 06:30 PM +00:00 - but showing 06:28 PM -00:01

Получение UTC сейчас, а затем преобразование его в другой часовой пояс работает отлично

      print(arrow.utcnow().to('Australia/Melbourne').format('hh:mm A ZZ'))

РЕШЕНИЕ: мы должны добавить временное значение даты для преобразования, если у нас нет значения даты.

      def convert_timezone(time_to_convert,timezone):
  time_to_convert='20111111 '+time_to_convert
  return arrow.get(time_to_convert).to(timezone)

print(convert_timezone('18:30+0000','Australia/Melbourne').format('hh:mm A ZZ'))

1 ответ

добавьте соответствующую дату в строку ввода, и это работает так, как вы ожидаете:

      import arrow

start = '2021-02-01 18:30+0000'
start_time = arrow.get(start)
print(start_time.to('Australia/Melbourne').format('hh:mm A ZZ'))
# 05:30 AM +11:00
Другие вопросы по тегам