3

现在我有像 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 is before 1900; datetime strftime() 方法需要 year >= 1900'

所以我使用isoformat方法

4

3 回答 3

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
于 2012-12-11T16:59:34.037 回答
1

您可以从原始时间中减去秒和分钟...

nominsec = mintt - datetime.timedelta(minutes=mintt.minute, seconds=mintt.second)
于 2012-12-11T16:59:12.040 回答
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'
于 2012-12-11T17:03:58.830 回答