Разбор даты без ведущих нулей, без пробелов и без люфта - PullRequest
0 голосов
/ 04 августа 2020

Привет, у меня есть такая строка: «202082201», что означает 2020/8/2 20:01.

Это потому, что каждое поле в строке не имеет начального нуля.

Задача - превратить эту строку в дату в python. Я пробовал этот код:

regex ='%Y%m%d%H%M'
str = "202082201"
date_obj = dt.strptime(str, regex)
date_str = dt.strftime(date_obj, '%Y/%m/%d %H:%M')
print(date_str)

Но вместо этого он дает мне 2020/08/22 00:01.

Ответы [ 2 ]

0 голосов
/ 04 августа 2020
regex ='%Y%m%d%H%M'
str = "202082201"
date_obj = dt.strptime(str, regex)
date_str = dt.strftime(date_obj, '%Y/%m/%d %H:%M')
print(date_str)

Если вы посмотрите на этот блок кода, директива% d дополнена нулями. Итак, если вы должны были проверить свойства вашего date_obj:

>>> regex ='%Y%m%d%H%M'
>>> str = "202082201"
>>> date_obj = dt.strptime(str, regex)
>>> date_str = dt.strftime(date_obj, '%Y/%m/%d %H:%M')
>>> print(date_str)
2020/08/22 00:01
>>> date_obj.hour
0
>>> date_obj.month
8
>>> date_obj.year
2020
>>> date_obj.month
8
>>> date_obj.day
22
>>> date_obj.hour
0
>>> date_obj.minute
1
>>> 

Там кажется директивой для десятичного числа, если вы используете% -d вместо% d, но есть примечание, что это зависит, говорит здесь .

0 голосов
/ 04 августа 2020

Думаю, лучше всего создать настраиваемую функцию для вызова вместо strftime(). Попросите его взять объект datetime, а затем выплюнуть нужную настраиваемую строку.

Пример:

regex ='%Y%m%d%H%M'
str = "202082201"
date_obj = dt.strptime(str, regex)

date_only_str = f"{date_obj.year}/{date_obj.month}/{date_obj.day}"
time_str = date_obj.strftime('%H:%M')
date_str = f"{date_only_str} {time_str}"

print(date_str)


2020/8/22 00:01

Здесь строки 5-7 могут быть помещены в функцию, если вы собираетесь использовать их повторно.

def date_to_string(dt_obj):
    date = f"{dt_obj.year}/{dt_obj.month}/{dt_obj.day}"
    time = dt_obj.strftime('%H:%M')
    return f"{date} {time}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...