Python格式日期问题

时间:2016-06-21 10:45:22

标签: python django

我认为简单的事情变得如此艰难。 我正在尝试格式化日期时间对象。

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)

如果有人能指出我正确的方向,那就太好了。

3 个答案:

答案 0 :(得分:2)

尝试删除在.utcnow()来电之前添加的.strftime()来电。 new_value.utcnow()调用datetime.datetime.utcnow,它返回一个全新的datetime.datetime对象,表示当前时间,与new_valueold_value无关。

答案 1 :(得分:0)

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'))

答案 2 :(得分:0)

只是一个基于代码的简单代码段

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