Python - преобразование даты - PullRequest
       1

Python - преобразование даты

0 голосов
/ 15 сентября 2018

Я использую Python и хочу преобразовать дату из следующих форматов:

'30th Sep 2018' или 'Mon 30th Sep 2018'

в формат:

'2018-09-30 00:00:00'

Я уже пытался использовать функции strptime () и strftime (), но не могу заставить их работать с ними.

Кто-нибудь знает, как сделать это в Python?

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Самый простой способ преобразования из 30th Sep 2018 или Mon 30th Sep 2018 в 2018-09-30 00:00:00 использует dateutil.parser, то есть:

from dateutil.parser import parse
d = "30th Sep 2018"
dd = "Mon 30th Sep 2018"
print parse(d)
print parse(dd)
# 2018-09-30 00:00:00
# 2018-09-30 00:00:00

Для обратного преобразованияесть datetime.strptime, но я боюсь, что он не выводит порядковые числа (1-е, 2-е), как вы хотите, тем не менее, вы можете достичь желаемого результата, используя небольшую функцию , т.е.:

def ord(n):
    return str(n)+("th" if 4<=n%100<=20 else {1:"st",2:"nd",3:"rd"}.get(n%10, "th"))
x = datetime.datetime.strptime("2018-09-30 00:00:00", '%Y-%m-%d %H:%M:%S')
print "{} {}".format(ord(int(x.strftime('%d'))), x.strftime('%b %Y'))
# 30th Sep 2018
0 голосов
/ 15 сентября 2018

Вы можете использовать datetime.strptime и datetime.strftime для этого следующим образом:

from datetime import datetime

def convert1(string):
    conversion = '%d' + string[2:4] + ' %b %Y'
    dt = datetime.strptime(string, conversion)
    return dt.strftime('%Y-%m-%d %H:%M:%S')

def convert2(string):
    conversion = '%a %d' + string[6:8] + ' %b %Y'
    dt = datetime.strptime(string, conversion)
    return dt.strftime('%Y-%m-%d %H:%M:%S')

print(convert1('30th Sep 2018'))
print(convert2('Mon 30th Sep 2018'))

print(convert1('01st Sep 2018'))
print(convert2('Sun 02nd Sep 2018'))

Это вывод:

2018-09-30 00:00:00
2018-09-30 00:00:00
2018-09-01 00:00:00
2018-09-02 00:00:00

Я использовал шаблоны, как описано в документации для datetime . Я использовал sclicing , чтобы извлечь th часть строки даты. При этом я гарантирую, что функции также работают для nd и st.

0 голосов
/ 15 сентября 2018
print(datetime.strftime('%Y %m %d %X)

Вы можете использовать strftime для изменения стиля даты и времени

Перейти к

http://strftime.org/

Для большей информации

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