Как отформатировать дату в формате ISO в UT C время даты? - PullRequest
0 голосов
/ 18 марта 2020

Как уже сказано в заголовке, как (легко) отформатировать дату в формате ISO в UT C время в Bash?

Факт:

➜  ~ echo $tmp
"2020-03-18T11:19:00+01:00"

Ожидается:

"2020-03-18T10:19:00+00:00"

Ответы [ 2 ]

1 голос
/ 18 марта 2020

При использовании систем на основе GNU / Linux попробуйте следующее:

date -u -d "$tmp" -Is

Это будет считывать вашу дату и печатать ее в формате ISO8601 с точностью до секунды (в соответствии с вашим желаемым результатом)

0 голосов
/ 20 апреля 2020

Создан Python -скрипт, и это сработало для меня!

(часовой пояс жестко задан как "Europe/Amsterdam".)

➜  ~ python3 convert_datetime_to_utc.py "2020-12-31T12:00:00+02:00"
2020-12-31T11:00:00+00:00

Содержимое convert_datetime_to_utc.py файл:

#!/usr/bin/python3

import sys, pytz, datetime

if len(sys.argv) != 2:
    sys.exit('Datetime not found as cmd line arg (Example: \'python3 convert_date_time_to_utc.py 2020-12-31T23:59:00+01:00\')')
dt_raw=sys.argv[1]

if len(dt_raw) < 19:
    sys.exit('Incorrect date time format (Example: \'2020-12-31T23:59:00+01:00\')')
dt = dt_raw[0:19]

local = pytz.timezone ("Europe/Amsterdam")
naive = datetime.datetime.strptime(dt, "%Y-%m-%dT%H:%M:%S")
local_dt = local.localize(naive, is_dst=None)
utc_dt = local_dt.astimezone(pytz.utc)
utc_dt_formatted = utc_dt.strftime("%Y-%m-%dT%H:%M:%S+00:00")

print(utc_dt_formatted)
...