У меня есть строка даты с форматом «Пн Фев 15 2010». Я хочу изменить формат на «15/02/2010». Как я могу это сделать?Строка даты и формата изменения даты
ответ
datetime
модуль может помочь вам в этом:
datetime.datetime.strptime(date_string, format1).strftime(format2)
datetime.datetime (пн 15 февраля 2010 г.,% a% b% d% Y "). strftime ("% d /% m /% Y ") Верно ли это? но я получил ошибку. – Nimmy
@nimmyliji: Вы видели «струнную» часть, не так ли? –
@nimmyliji: оно было исправлено за 10 минут до того, как вы отправили свой комментарий. и, конечно, вы должны иметь 'date_string' как строку. – SilentGhost
использование даты и времени библиотека http://docs.python.org/library/datetime.html посмотреть 9.1.7. especiall strptime() STRFTIME() Behavior¶ примеры http://pleac.sourceforge.net/pleac_python/datesandtimes.html
за ошибку выше nimmyliji, которую вы должны были сделать datetime.datetime.strptime («Пн Фев 15 2010», «% a% b% d% Y "). strftime ("% d /% m /% Y ") дает '15/02/2010 ' –
>>> from_date="Mon Feb 15 2010"
>>> import time
>>> conv=time.strptime(from_date,"%a %b %d %Y")
>>> time.strftime("%d/%m/%Y",conv)
'15/02/2010'
Вы можете установить dateutil библиотеку. Его функция parse
может определить, в каком формате находится строка, без указания формата, как вы делаете с datetime.strptime
.
from dateutil.parser import parse
dt = parse('Mon Feb 15 2010')
print(dt)
# datetime.datetime(2010, 2, 15, 0, 0)
print(dt.strftime('%d/%m/%Y'))
# 15/02/2010
dateutil.parse - лучшая альтернатива, если точный формат юридической строки ISO неизвестно. ISO может содержать или не содержать микросекунды. Он может содержать или не содержать «Z». datetime.strptime недостаточно гибко, чтобы соответствовать этому. –
Pase Date следует использовать с осторожностью. parse ('12 .07.2017 ') возвращает datetime (2017, 12, 7, ..), но parse ('13 .07.2017') возвращает .datetime (2017, 7, 13, ...) – ego2dot0
преобразования строки в объект даты и времени
from datetime import datetime
s = "2016-03-26T09:25:55.000Z"
f = "%Y-%m-%dT%H:%M:%S.%fZ"
datetime = datetime.strptime(s, f)
print(datetime)
output:
2016-03-26 09:25:55
Только ради завершения: при разборе дату с помощью strptime()
и дата содержит имя в день, месяц и т.д., быть в курсе что вам нужно учитывать локаль.
Это упоминается как сноска в docs.
В качестве примера:
import locale
print(locale.getlocale())
>> ('nl_BE', 'ISO8859-1')
from datetime import datetime
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> ValueError: time data '6-Mar-2016' does not match format '%d-%b-%Y'
locale.setlocale(locale.LC_ALL, 'en_US')
datetime.strptime('6-Mar-2016', '%d-%b-%Y').strftime('%Y-%m-%d')
>> '2016-03-06'
Как идет этот вопрос часто, здесь простое объяснение.
datetime
или time
модуль имеет две важные функции.
- STRFTIME - создает строковое представление даты или времени от даты и времени или времени объекта.
- strptime - создает объект datetime или time из строки.
В обоих случаях нам нужна форматирующая строка. Это представление, которое указывает, как дата или время форматируются в вашей строке.
Теперь предположим, что у нас есть объект даты.
>>> from datetime import datetime
>>> d = datetime(2010, 2, 15)
>>> d
datetime.datetime(2010, 2, 15, 0, 0)
Если мы хотим, чтобы создать строку из этой даты в формате 'Mon Feb 15 2010'
>>> s = d.strftime('%a %b %d %y')
>>> print s
Mon Feb 15 10
Давайте предположим, что мы хотим, чтобы преобразовать этот s
снова к datetime
объекта.
>>> new_date = datetime.strptime(s, '%a %b %d %y')
>>> print new_date
2010-02-15 00:00:00
См. This Документ всех директив по форматированию относительно даты и времени.
Дубликат всех этих: http://stackoverflow.com/search?q=%5Bpython%5D+parse+date.Точный дубликат этого: http://stackoverflow.com/questions/1713594/parsing-dates-and-times-from-strings-using-python –
Возможный дубликат [Как преобразовать строку даты в другой формат в python] (http://stackoverflow.com/questions/14524322/how-to-convert-a-date-string-to-different-format-in-python) – Pureferret