将日期时间向下舍入到上一个小时

Dou*_*ger 12 python datetime rounding

如何将日期时间舍入到前一个小时?例如:

print datetime.now().replace(microsecond=0)
>> 2017-01-11 13:26:12.0
Run Code Online (Sandbox Code Playgroud)

向下舍入到前一个小时: 2017-01-11 12:00:00.0

Wil*_*sem 36

由于要向下舍到小时,你可以简单地替换microsecond,seconds并且minutes所有零:

print(datetime.now().replace(microsecond=0,second=0,minute=0))
Run Code Online (Sandbox Code Playgroud)

如果你想向下舍到先前的小时(如示例说明2017-01-11 13:26:12.02017-01-11 12:00:00.0)更换了microseconds,secondsminutes0,然后从它减一小时:

from datetime import datetime, timedelta

print(datetime.now().replace(microsecond=0,second=0,minute=0)-timedelta(hours=1))
Run Code Online (Sandbox Code Playgroud)

shell中的示例:

$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime, timedelta
>>> print(datetime.now().replace(microsecond=0,second=0,minute=0)-timedelta(hours=1))
2017-01-11 16:00:00
Run Code Online (Sandbox Code Playgroud)


gip*_*psy 6

from datetime import datetime, timedelta

n = datetime.now() - timedelta(hours=1)
new_date = datetime(year=n.year, month=n.month, day=n.day, hour=n.hour)
Run Code Online (Sandbox Code Playgroud)