Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 5, 2020 11:01:59

zabigundi
Зарегистрирован: 2020-04-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

Всю голову сломал но ничего не получается
как в python3.6
Дату формата 2020-04-05T08:53:13+03:00 (как правильно называется этот формат?)
преобразовать в Unix time?

 d='2020-04-05T08:53:13+03:00'
print (d)
i=str(dateutil.parser.parse(d))
print (i)

Отредактировано zabigundi (Апрель 5, 2020 11:02:41)

Офлайн

#2 Апрель 5, 2020 11:27:11

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

 from datetime import datetime
d = '2020-04-05T08:53:13+03:00'
a = datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%z')
a.timestamp()
1586065993.0

Офлайн

#3 Апрель 5, 2020 11:41:04

zabigundi
Зарегистрирован: 2020-04-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

Romissevd
a = datetime.strptime(d, ‘%Y-%m-%dT%H:%M:%S%z’)
в python3.7 работает
а в python3.6 нет


>>> from datetime import datetime
>>> d = ‘2020-04-05T08:53:13+03:00’
>>> a = datetime.strptime(d, ‘%Y-%m-%dT%H:%M:%S%z’)
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “/usr/lib/python3.6/_strptime.py”, line 565, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File “/usr/lib/python3.6/_strptime.py”, line 362, in _strptime
(data_string, format))
ValueError: time data ‘2020-04-05T08:53:13+03:00’ does not match format ‘%Y-%m-%dT%H:%M:%S%z’

Отредактировано zabigundi (Апрель 5, 2020 11:59:00)

Офлайн

#4 Апрель 5, 2020 12:06:20

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

Да в версиях python до 3.7 это работать не будет. В версиях ниже ожидается формат часового пояса без двоеточий.

Офлайн

#5 Апрель 5, 2020 12:14:53

zabigundi
Зарегистрирован: 2020-04-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

Romissevd
Да в версиях python до 3.7 это работать не будет. В версиях ниже ожидается формат часового пояса без двоеточий.
Подскажите пожалуйста как решить, очень нужно, буду очень признателен

Офлайн

#6 Апрель 5, 2020 12:29:04

Romissevd
От: Счастье
Зарегистрирован: 2015-03-01
Сообщения: 533
Репутация: +  76  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

Вот костыльное решение конечно же, но будет работать

 import re
from datetime import datetime
FORMAT_DATETIME = '%Y-%m-%dT%H:%M:%S%z'
d = '2020-04-05T08:53:13+03:00'
try:
    a = datetime.strptime(d, FORMAT_DATETIME)
except ValueError:
    print('version python < 3.7')
tz = re.search(r'[+]\d{2}\:\d{2}', d).group()
tz_old_format = ''.join(tz.split(':'))
d = re.sub(r'[+]\d{2}\:\d{2}', tz_old_format, d)
a = datetime.strptime(d, FORMAT_DATETIME)
print(a.timestamp())

Отредактировано Romissevd (Апрель 5, 2020 12:31:37)

Офлайн

#7 Апрель 5, 2020 12:41:38

zabigundi
Зарегистрирован: 2020-04-05
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите преобразовать дату

Romissevd
import re
from datetime import datetime
FORMAT_DATETIME = ‘%Y-%m-%dT%H:%M:%S%z’
d = ‘2020-04-05T08:53:13+03:00’
try:
a = datetime.strptime(d, FORMAT_DATETIME)
except ValueError:
print('version python < 3.7')
tz = re.search(r'\d{2}\:\d{2}', d).group()
tz_old_format = ‘'.join(tz.split(’:'))
d = re.sub(r'\d{2}\:\d{2}', tz_old_format, d)
a = datetime.strptime(d, FORMAT_DATETIME)
print(a.timestamp())
СПАСИБО ОГРОМЕННОЕ!!!!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version