Конвертация дат в питоне - PullRequest
0 голосов
/ 11 июня 2018

У меня есть три уникальных формата даты, перечисленных ниже

date1 = "2018-05-31 14:34:42+00:00"
date2 = "2018-05-21T14:49:52.833"
date3 = "2018-06-01 00:00:00"

Как я могу преобразовать в единый формат даты ("%Y-%m-%d %H:%M:%S") всех этих трех дат, используя python?

Попробовалкод ниже, но я получаю ValueError и TypeError

from dateutil.parser import parse
def parse_date(request_date):
    request_date = parse(request_date)
    parsed_date = request_date.strftime("%Y-%m-%d %H:%M:%S")
    return parsed_date

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Должно быть что-то не так, вам придется разработать свой код / ​​исключения.

>>> from dateutil.parser import parse
>>> date1 = "2018-05-31 14:34:42+00:00"
>>> date2 = "2018-05-21T14:49:52.833"
>>> date3 = "2018-06-01 00:00:00"
>>> print( parse(date1).strftime("%Y-%m-%d %H:%M:%S"))
2018-05-31 14:34:42
>>> print( parse(date2).strftime("%Y-%m-%d %H:%M:%S"))
2018-05-21 14:49:52
>>> print( parse(date3).strftime("%Y-%m-%d %H:%M:%S"))
2018-06-01 00:00:00
0 голосов
/ 11 июня 2018

Где вы получаете исключение, потому что я пробовал это, и это работает:

date1 = "2018-05-31 14:34:42+00:00"
date2 = "2018-05-21T14:49:52.833"
date3 = "2018-06-01 00:00:00"

requestedDates = date1,date2,date3

from dateutil.parser import parse
def parse_date(request_date):
    request_date = parse(request_date)
    parsed_date = request_date.strftime("%Y-%m-%d %H:%M:%S")
    return parsed_date


for i in requestedDates:
    print(parse_date(i))

Output:
2018-05-31 14:34:42
2018-05-21 14:49:52
2018-06-01 00:00:00

Типы, которые я использую в качестве даты, являются строковыми, вы уверены, что значения, которые вы даетек функции есть строка?(Вы можете проверить, соответствуют ли они функции type (date1))

0 голосов
/ 11 июня 2018

Как насчет попробовать это

from datetime import datetime as dt
>>> date_str='12/20/2014 15:25:05 pm'

>>> date_obj = dt.strptime(date_str, '%m/%d/%Y %H:%M:%S %p')

>>> dt.strftime(date_obj, '%m/%d/%Y %I:%M:%S %p')
'12/20/2014 03:25:05 PM'
...