Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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 为什么strptime和strftime的行为不同,您对此做了什么?_Python_Google App Engine - Fatal编程技术网

Python 为什么strptime和strftime的行为不同,您对此做了什么?

Python 为什么strptime和strftime的行为不同,您对此做了什么?,python,google-app-engine,Python,Google App Engine,我使用的是Python 2.5,运行在App Engine中,使用如下代码进行分页: NEXT_FORMAT = "%Y-%m-%d %H:%M:%S" current = model.completed_on.strftime(NEXT_FORMAT) completed_before = datetime.datetime.strptime(current, NEXT_FORMAT) 有时strftime会退出一个类似于2011-11-24 05:13:54.355436的时间,然后s

我使用的是Python 2.5,运行在App Engine中,使用如下代码进行分页:

NEXT_FORMAT = "%Y-%m-%d %H:%M:%S"

current = model.completed_on.strftime(NEXT_FORMAT)

completed_before = datetime.datetime.strptime(current, NEXT_FORMAT)
有时strftime会退出一个类似于
2011-11-24 05:13:54.355436
的时间,然后strftime会在尝试吃它的时候爆炸

ValueError: unconverted data remains: .355436
那么,如果您使用的格式是%S是秒作为十进制数,那么为什么它会创建一个浮点数呢?这将要发生,为什么strtime不以同样的方式处理它呢?

将其更改为:

NEXT_FORMAT = "%Y-%m-%d %H:%M:%S.%f"
这也将转换微秒部分

或者,如果您想去掉微秒,可以在调用strtime之前使用replace

current = current.replace(microsecond=0)

我相信
%f
是在2.6中添加的,OP似乎使用了2.5.0的好捕获。在这种情况下,我认为必须在调用strtime之前调用usingreplace。我想知道微秒是从哪里来的。strftime肯定是由本机c实现完成的,想知道在哪个平台上观察到这一点很有意思……Google App Engine(见标签)在调用strftime之前,您能记录完成的_的值吗?奇怪的是,strftime在您没有要求的情况下只会增加微秒。到目前为止,我的解决方案是执行current.split('.')[0],从而完成任务。我认为这是我在Python中遇到的第一个脚趾短梗,其他一切都按照预期进行。