Python格式日期问题

问题描述:

一些我认为会很简单的事情已经变成这样一种斗争。 我想格式化日期时间对象。Python格式日期问题

From this 2016-06-17 09:56:53.289000+00:00 to 2016-06-17 09:56:53 

我试过的这段代码并没有对输出做任何修改。它跳过它。

if type(field) is models.DateField: 
    if old_value != None: 
     old_value = old_value.strftime('%Y-%m-%d %H:%M:%S')[:-3] 
    if new_value != None: 
     new_value = new_value.strftime('%Y-%m-%d %H:%M:%S')[:-3] 

然后我尝试以下

if isinstance(new_value, datetime.datetime): 
    new_value = new_value.utcnow().strftime('%Y-%m-%d %H:%M:%S')[:-3] 
if isinstance(old_value, datetime.datetime): 
    old_value = old_value.utcnow().strftime('%Y-%m-%d %H:%M:%S')[:-3] 

然而,它同时删除NEW_VALUE和OLD_VALUE,不显示任何值的任何痕迹。这让我很困惑!

我的代码的结束部分如下,显示日期:

if new_value != old_value: 
    print "%s does not match" % key 
    changes[key] = "Field %s %s updated to %s<br/>" % (key, old_value, new_value) 

如果任何人都可以在正确的方向指向我,将是巨大的。

+0

我认为这会做 – shining

尝试取出.utcnow()叫你之前,你的.strftime()来电补充说。 new_value.utcnow()调用datetime.datetime.utcnow,它返回一个全新的datetime.datetime对象,表示当前时间,它与new_valueold_value无关。

+0

一整天浪费我的时间在这,你会发现我的错误,2秒!谢谢! – JohnTaylor

+0

适合我们所有人!很高兴我能帮上忙! – Kate

d = '2016-06-17 09:56:53.289000+00:00' 

print(datetime.strptime(d[:19], '%Y-%m-%d %H:%M:%S').strftime('%Y-%m-%d %H:%M:%S')) 

根据您的代码只是一个简单的片断

In [11]: from datetime import datetime 

In [12]: mytime = now.strftime("%Y-%m-%d %H:%M:%S") 

In [13]: print(mytime) 
2016-06-21 16:44:32