小编典典

在mysql datetime和python timestamp之间转换的正确方法是什么?

mysql

根据http://dev.mysql.com/doc/refman/5.0/en/datetime.html。我找到了一种将字符串值’YYYY-
MM-DD HH:MM:SS’转换为时间戳int的方法。

我在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)

我试图将时间戳转换为YYYY-MM-DD HH:MM:SS格式

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'))

阅读 352

收藏
2020-05-17

共1个答案

小编典典

如果我没有正确理解,很高兴进行更新,但是这里有一些示例可能会有所帮助。请注意,这使用的是datetime模块而不是time

>>> import datetime

在这里,我们设置示例时间戳ts和格式f

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

与您上面的操作类似,我们使用strptime函数(from datetime.datetimedatetime根据格式参数将字符串转换为对象:

>>> 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()返回浮点数:

>>> 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'
2020-05-17