尝试将日期时间转换为python 2.7中的unix时间戳时出现属性错误

时间:2017-07-31 15:40:18

标签: python datetime timestamp attributeerror

我正在查询数据库以获取日期时间,然后尝试将其转换为unix时间戳。以下是我的一些代码:

#! /bin/python
import time, pytz
from datetime import datetime

eastern = pytz.timezone("US/Eastern")

def toUnix(dt):
    #converts a datetime to a unix timestamp
    return time.mktime(dt.timetuple())

def getFillStartTime(fillNo):
    #returns the start time of a fill as a unix time stamp
    dsacursor.execute('select startTime from fillInfo where fillNo = @fillNo',{'@fillNo':fillNo})
    sel = dsacursor.fetchall()
    dt = sel[0][0]
    dt = dt.replace(tzinfo = eastern)
    return toUnix(dt)

print getFillStartTime(20318)

当我运行它时,我得到AttributeError: replace这里是追溯:

Traceback (most recent call last):
  File "test.py", line 27, in <module>
    print getFillStartTime(20318)
  File "importToLogView.py", line 25, in getFillStartTime
    dt = dt.replace(tzinfo = eastern)
AttributeError: replace

我已经测试了dt函数传递给DateTimeType时的某些内容和toUnix() dt.timetuple()。此外,当我用datetime.now().timetuple()替换AttributeError: timetuple时,它会打印出预期的结果。我也试过不替换tzinfo,而是给出了In Process。如果是日期时间,为什么会出现此错误?

1 个答案:

答案 0 :(得分:0)

您假设sel将成为日期时间对象,但事实并非如此。无法从您发布的代码段中获取该内容,并且很可能以字符串形式返回(依赖于数据库客户端)。这样做的一般形式是

dt = datetime.strptime(sel[0][0], '%b %d %Y %I:%M%p')

其中%b %d %Y %I:%M%p是字符串的格式。

编辑:格式化