Конвертировать ДД / ММ / ГГГГ ЧЧ: ММ: СС в MySQL TIMESTAMP - PullRequest
3 голосов
/ 10 сентября 2010

Мне бы хотелось, чтобы простой способ найти и переформатировать текст формата 'DD / MM / YYYY' в 'YYYY / MM / DD' для совместимости с MySQL TIMESTAMPs, в списке элементов текста, которые могут или не могутсодержать дату atall, под питоном.(Я думаю, что RegEx?)

По сути, я ищу способ проверить список элементов и исправить любые найденные форматы меток времени.

Отличительной чертой стандартов является то, что есть так много выбора ...

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

Вы можете прочитать строку в объект datetime и затем вывести ее обратно в виде строки, используя другой формат.Например,

>>> from datetime import datetime
>>> datetime.strptime("31/12/2009", "%d/%m/%Y").strftime("%Y/%m/%d")
'2009/12/31'

В основном я ищу способ проверить список элементов и исправить любые найденные форматы отметок времени.

Если формат ввода не соответствуетможет варьироваться, тогда вам лучше с dateutil.

>>> from dateutil.parser import parse
>>> parse("31/12/2009").strftime("%Y/%m/%d")
'2009/12/31'

Dateutil может автоматически обрабатывать множество форматов ввода.Для работы со списком вы можете map обернуть над функцией parse над списком и соответствующим образом преобразовать значения.

1 голос
/ 10 сентября 2010

Если вы используете модуль MySQLdb (также известный как «mysql-python»), для любого поля даты и времени вы можете указать тип datetime вместо строки. Этот тип также возвращается и является предпочтительным способом предоставления значения.

Для Python 2.5 и выше вы можете сделать:

from datetime import datetime

value = datetime.strptime(somestring, "%d/%m/%Y")

Для более старых версий python это немного более многословно, но на самом деле не является большой проблемой.

import time
from datetime import datetime

timetuple = time.strptime(somestring, "%d/%m/%Y")
value = datetime(*timetuple[:6])

Различные строки формата взяты непосредственно из того, что принято вашей C-библиотекой. Посмотрите man strptime в Unix, чтобы найти другие приемлемые значения формата. Не все форматы времени являются переносимыми, но большинство основных форматов.

Примечание значения даты и времени могут содержать часовые пояса. Я не верю, что MySQL точно знает, что с ними делать. Даты, которые я делаю выше, обычно считаются «наивными». Если часовые пояса важны, рассмотрите что-то вроде библиотеки pytz.

...