In [1]: import datetime
In [2]: now = datetime.datetime.now()
In [3]: now
Out[3]: datetime.datetime(2019, 3, 14, 10, 47, 35, 448794)
In [4]: past_24h = now - datetime.timedelta(days=1)
In [5]: past_24h
Out[5]: datetime.datetime(2019, 3, 13, 10, 47, 35, 448794)
In [6]: next_24h = now + datetime.timedelta(days=1)
In [7]: next_24h
Out[7]: datetime.datetime(2019, 3, 15, 10, 47, 35, 448794)
In [9]: yesterday_0h = datetime.datetime.strptime(str(datetime.date.today()), "%Y-%m-%d") - datetime.timedelta(days=1)
In [10]: yesterday_0h
Out[10]: datetime.datetime(2019, 3, 13, 0, 0)
In [12]: yesterday_235959 =datetime.datetime.strptime(str(datetime.date.today()), "%Y-%m-%d") - datetime.timedelta(seconds=1)
In [13]: yesterday_235959
Out[13]: datetime.datetime(2019, 3, 13, 23, 59, 59)
In [14]: today_0h = datetime.datetime.strptime(str(datetime.date.today()), "%Y-%m-%d")
In [15]: today_0h
Out[15]: datetime.datetime(2019, 3, 14, 0, 0)
In [16]: today_235959 = datetime.datetime.strptime(str(datetime.date.today()), "%Y-%m-%d") + datetime.timedelta(days=1, seconds=-1)
In [17]: today_235959
Out[17]: datetime.datetime(2019, 3, 14, 23, 59, 59)
In [19]: tomorrow_0h = datetime.datetime.strptime(str(datetime.date.today()), "%Y-%m-%d") + datetime.timedelta(days=1)
In [20]: tomorrow_0h
Out[20]: datetime.datetime(2019, 3, 15, 0, 0)
当然,你也可以使用replace来替换,这个就有点有意思了
In [26]: today_235959 = datetime.datetime.now().replace(hour=23, minute=59, second=59)
In [27]: today_235959
Out[27]: datetime.datetime(2019, 3, 14, 23, 59, 59, 731703)
In [31]: today_0h = datetime.datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
In [32]: today_0h
Out[32]: datetime.datetime(2019, 3, 14, 0, 0)
In [34]: yesterday_0h = (now - datetime.timedelta(days=1)).replace(hour=0, minute=0, second=0, microsecond=0)
In [35]: yesterday_0h
Out[35]: datetime.datetime(2019, 3, 13, 0, 0)
以此类推
不过你要是想全部用timedelta减 也是可以的
In [75]: yesterday_0h = now - datetime.timedelta(days=1, hours=now.hour, minutes=now.minute, seconds=now.second, microseconds=now.microsecond)
In [76]: yesterday_0h
Out[76]: datetime.datetime(2019, 3, 13, 0, 0)
In [77]: tomorrow_0h = now - datetime.timedelta(days=-1, hours=now.hour, minutes=now.minute, seconds=now.second, microseconds=now.microsecond)
In [78]: tomorrow_0h
Out[78]: datetime.datetime(2019, 3, 15, 0, 0)
以此类推
当然了 还有有意思的时间的包就是arrow了