现在我有像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方法
答案 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'