Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 datetime对象返回60秒的值_Python_Sqlite_Datetime - Fatal编程技术网

Python 2.7 datetime对象返回60秒的值

Python 2.7 datetime对象返回60秒的值,python,sqlite,datetime,Python,Sqlite,Datetime,我有以下代码,用于从许多仪器生成时间戳。数据在读取时(w/o毫秒)会记录到初始SQLite数据库中,然后在传输时(w.毫秒)会记录到第二个数据库中。经过几天的数据采集,我发现每天晚上有几次我记录的时间以60秒结束(vs 00或59) 我知道Python对leap seconds有一些支持,但我知道在我记录数据的晚上没有任何支持。此外,datetime不支持大于59秒的秒数。不管怎么说,我不知道发生了什么,而且我还不能手工重现这个问题。我希望其他人以前也见过这种行为 例如,在我的第一个日志中有条目

我有以下代码,用于从许多仪器生成时间戳。数据在读取时(w/o毫秒)会记录到初始SQLite数据库中,然后在传输时(w.毫秒)会记录到第二个数据库中。经过几天的数据采集,我发现每天晚上有几次我记录的时间以60秒结束(vs 00或59)

我知道Python对leap seconds有一些支持,但我知道在我记录数据的晚上没有任何支持。此外,datetime不支持大于59秒的秒数。不管怎么说,我不知道发生了什么,而且我还不能手工重现这个问题。我希望其他人以前也见过这种行为

例如,在我的第一个日志中有条目20160823043460,在我的传输日志中有条目20160823043500.01

这是我的时间戳代码。(是的,我知道奇怪的是,所有的东西都没有相同的时间戳,但我没有设计规范,我只是按照它编码)


检查python文档中的时间库


在注释中,在2下面,它说秒的范围实际上是[0,61]。

理解。然而,文档说60和61是闰秒,这在我登录时没有发生。我觉得这是一个舍入错误,但我很惊讶在基本Python库中看到它。OP说他没有取消发布时间包,而是datetime,根据文档,它不会跳过秒。请仔细查看代码的其他部分:
timeStamp=time.strftime(“%Y%m%d%H%m%S”)
@Fejs No,“time”不是时间模块,而是函数的第一个参数。谢谢,这更容易阅读。您是否使用time=None调用函数,并将返回的字符串存储为字符串而不是数字?您说您将其存储在sqlite中。列的数据类型是什么?此外,考虑重命名“时间”参数,因为标准LIB中有一个带有该名称的模块,恰好也有一个“STrfTime-()”函数。所以我选择这个名字很糟糕。我不知道为什么我选择了它,但它是一个在其他地方创建的日期时间传递的地方。在本例中,我根本不使用它,时间总是空的。进入SQLite的是strftime返回的字符串。我知道strftime可以返回秒=60的字符串,但我看到这种行为的频率比我应该看到的要高很多。下周我将再次运行一些代码,看看是否可以再次生成该行为。
def makeTimeStamp(time=None, miliseconds=False):
    timeStamp = ""
    if time is None and miliseconds is False:
        timeStamp = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S")
    #time format: YYYY MM DD HH MM SS as one string
    elif time is None and miliseconds is True:
        timeStamp = datetime.datetime.utcnow().strftime("%Y%m%d%H%M%S.%f")
    else:
        try:
            timeStamp = time.strftime("%Y%m%d%H%M%S")
        except AttributeError:
            print "error:  attempted to make a timestamp from a " + type(time)
    return timeStamp