Подтвердить что ты не робот

Каков правильный способ преобразования между mysql datetime и меткой времени python?

согласно http://dev.mysql.com/doc/refman/5.0/en/datetime.html. мне нужно найти способ преобразования строкового значения "YYYY-MM-DD HH: MM: SS" в метку времени.

Я посмотрел в документ python.

Я попытался:

print(time.strptime('2013-01-12 15:27:43', '%Y-%m-%d %H:%M:%S'))   

python дает мне такой результат.

time.struct_time (tm_year = 2013, tm_mon = 1, tm_mday = 12, tm_hour = 15, tm_min = 27, tm_sec = 43, tm_wday = 5, tm_yday = 12, tm_isdst = -1)

Я попробовал это преобразовать метку времени в ГГГГ-ММ-ДД ЧЧ: ММ: формат СС

print(time.strftime('%Y-%m-%d %H:%M:%S',time.time()))

python дает мне ошибку типа.

Я использую только временную метку, чтобы рассчитать время и дату, я надеюсь, что есть уже способ в python, простой и эффективный, и не нужно создавать временные данные.

в соответствии с ответом я пишу два метода. надеюсь, что было бы полезно

import time

def convertTimestampToSQLDateTime(value):
    return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(value))

def convertSQLDateTimeToTimestamp(value):
    return time.mktime(time.strptime(value, '%Y-%m-%d %H:%M:%S'))
4b9b3361

Ответ 1

Счастлив обновить это, если я не понимаю, но вот несколько примеров, которые могут помочь. Обратите внимание, что вместо time используется модуль datetime.

>>> import datetime

Здесь мы устанавливаем пример timestamp ts и формат f:

>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'

Подобно тому, что вы делали выше, мы используем функцию strptime (от datetime.datetime) для преобразования нашей строки в объект datetime на основе параметра форматирования:

>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)

Теперь обратное - здесь мы используем datetime.datetime.now(), чтобы получить текущее время как объект datetime:

>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)

В случае datetime метод strftime фактически вызывается в самом объекте datetime с параметром форматирования как аргументом:

>>> now.strftime(f)   
'2013-01-12 00:46:54'

В вашей ситуации причина, по которой вы получали ошибку, состоит в том, что time.time() возвращает float:

>>> time.time()
1357980846.290231

Но time.strftime нужен кортеж time, похожий на то, что у вас было выше. Не входя в сумасшедшую спираль, которая является временем, функция, такая как time.localtime(), вернет вышеупомянутый кортеж time и вернется, как вы ожидаете:

>>> now = time.localtime()
>>> now
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=55, tm_sec=55, tm_wday=5, tm_yday=12, tm_isdst=0)
>>> f = '%Y-%m-%d %H:%M:%S'
>>> time.strftime(f, now)
'2013-01-12 00:55:55'