如何格式化日期时间,如“2012-12-11 12:00:00”

时间:2012-12-11 16:51:34

标签: python datetime

现在我有像mintt

这样的约会时间
In [134]: mintt
Out[134]: datetime.datetime(2012, 5, 9, 23, 21, 10, 548382, tzinfo=<matplotlib.dates._UTC object at 0x2f805d0>)    

我改变它:

In [131]: mintt.isoformat(" ").split(".")[0]
Out[131]: '2012-05-09 23:21:10'

如何删除分钟和秒钟,让它变成“2012-05-09 23:00:00”?

PS:一开始我使用下面的方法:

In [135]: mintt.strftime('%Y-%m-%d %H:00:00')
Out[135]: '2012-05-09 23:00:00'

但它会引发一个例外,例如'year = 1601是在1900年之前; datetime strftime()方法需要年份> = 1900'

所以我使用isoformat方法

3 个答案:

答案 0 :(得分:4)

使用datetime.replace()方法。

>>> import datetime
>>> t = datetime.datetime(2012, 5, 9, 23, 21, 10, 548382)
>>> t.replace(minute=0, second=0, microsecond=0).isoformat(' ')
'2012-05-09 23:00:00'

这不会改变t,它会创建一个新对象。

>>> t
datetime.datetime(2012, 5, 9, 23, 21, 10, 548382) # still has same value

答案 1 :(得分:1)

你可以从原来的时间减去秒和分钟......

nominsec = mintt - datetime.timedelta(minutes=mintt.minute, seconds=mintt.second)

答案 2 :(得分:0)

如果它是一个datetime对象,也许这个?:

>>> dt = datetime.datetime.strptime('2012-05-09 23:00:00','%Y-%m-%d %H:%M:%S')
>>> dt
datetime.datetime(2012, 5, 9, 23, 0)
>>> "{} {}:00:00".format(dt.date(),dt.hour)
'2012-05-09 23:00:00'