Python 为什么strptime和strftime的行为不同,您对此做了什么?
我使用的是Python 2.5,运行在App Engine中,使用如下代码进行分页: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
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中遇到的第一个脚趾短梗,其他一切都按照预期进行。