форматирование datetime.strptime - PullRequest
0 голосов
/ 03 октября 2018

Моя дата и время в моем CSV-файле выглядят следующим образом:

2011/1/1 0:00
2011/1/1 0:30
2011/1/1 1:00

при запуске:

date = datetime.strptime(row[0], '%Y/%m/%d %H:%M')

Я получаю вывод даты и времени как:

[datetime.datetime(2011, 1, 1, 0, 0)]
[datetime.datetime(2011, 1, 1, 0, 30)]

Как я могу отформатировать его в исходное время?

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Вы уже проанализировали строку в объекте datetime.Это делается с помощью datetime.datetime.strptime().Чтобы отформатировать объект обратно в строку, вы можете использовать тот же синтаксис, но с использованием метода datetime.datetime.strftime(), например:

date.strftime('%Y/%m/%d %H:%M')

См. Также документация .

Если выЕсли вы хотите точно вашу входную строку (без начального 0), вы можете поставить дефис между оператором процента и символом директивы, где это необходимо, например:

date.strftime('%Y/%-m/%-d %-H:%M')

Это хорошо объяснено в: Python strftime - дата без начала 0 , но зависит от платформы .

0 голосов
/ 03 октября 2018

В данный момент вы создаете объект datetime из строки и средства форматирования, как показано здесь .Вероятно, где-то в вашем коде вы помещаете этот объект в список и ссылаетесь на него.Python не знает, что вы хотите напечатать контейнер (список) с ним в определенном строковом формате.

Если я понимаю ваш вопрос, вы хотите напечатать / вернуть элемент, а не контейнер.Показано ниже:

import datetime

l = []
today = datetime.date.today()
l.append(today)
#what you have
print(l)
#addressing just the first element
print(l[0])
0 голосов
/ 03 октября 2018

Попробуйте напечатать дату в строковом формате:

from datetime import datetime    

row = "2011/1/1 0:30"
date = datetime.strptime(row, '%Y/%m/%d %H:%M')
print str(date)

вывод:

'2011-01-01 00:30:00'
...