2010-02-15 6 views
72

У меня есть строка даты с форматом «Пн Фев 15 2010». Я хочу изменить формат на «15/02/2010». Как я могу это сделать?Строка даты и формата изменения даты

+0

Дубликат всех этих: http://stackoverflow.com/search?q=%5Bpython%5D+parse+date.Точный дубликат этого: http://stackoverflow.com/questions/1713594/parsing-dates-and-times-from-strings-using-python –

+0

Возможный дубликат [Как преобразовать строку даты в другой формат в python] (http://stackoverflow.com/questions/14524322/how-to-convert-a-date-string-to-different-format-in-python) – Pureferret

ответ

91

datetime модуль может помочь вам в этом:

datetime.datetime.strptime(date_string, format1).strftime(format2) 
+1

datetime.datetime (пн 15 февраля 2010 г.,% a% b% d% Y "). strftime ("% d /% m /% Y ") Верно ли это? но я получил ошибку. – Nimmy

+1

@nimmyliji: Вы видели «струнную» часть, не так ли? –

+1

@nimmyliji: оно было исправлено за 10 минут до того, как вы отправили свой комментарий. и, конечно, вы должны иметь 'date_string' как строку. – SilentGhost

0

использование даты и времени библиотека http://docs.python.org/library/datetime.html посмотреть 9.1.7. especiall strptime() STRFTIME() Behavior¶ примеры http://pleac.sourceforge.net/pleac_python/datesandtimes.html

+0

за ошибку выше nimmyliji, которую вы должны были сделать datetime.datetime.strptime («Пн Фев 15 2010», «% a% b% d% Y "). strftime ("% d /% m /% Y ") дает '15/02/2010 ' –

20
>>> 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' 
37

Вы можете установить 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 
+0

dateutil.parse - лучшая альтернатива, если точный формат юридической строки ISO неизвестно. ISO может содержать или не содержать микросекунды. Он может содержать или не содержать «Z». datetime.strptime недостаточно гибко, чтобы соответствовать этому. –

+3

Pase Date следует использовать с осторожностью. parse ('12 .07.2017 ') возвращает datetime (2017, 12, 7, ..), но parse ('13 .07.2017') возвращает .datetime (2017, 7, 13, ...) – ego2dot0

12

преобразования строки в объект даты и времени

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 
1

Только ради завершения: при разборе дату с помощью 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' 
3

Как идет этот вопрос часто, здесь простое объяснение.

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 Документ всех директив по форматированию относительно даты и времени.