昨天午夜是一个划时代的时间?

发布于 2021-01-29 17:46:13

我试图让我对datetime模块有所了解。我知道现在是一个纪元,一个事件的最后发生时间(一个纪元)。我需要做的是弄清楚该事件是否在昨天的午夜和午夜之间发生。

t = time.time() # is now
t2 = 1234567890 # some arbitrary time from my log

24小时前的电话是-86400,但我如何将其四舍五入到午夜。我真的很难找到一种方法来获取和获取日期时间的时间戳,或者然后操纵日期时间来设置时间。

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在半夜

    生成最后一个午夜很容易:

    from datetime import datetime, time
    
    midnight = datetime.combine(datetime.today(), time.min)
    

    结合了今天的日期(您可以使用,也可以选择date()一个datetime()实例),并在
    午夜time.min形成一个datetime对象。
    __

    昨天

    使用atimedelta()可以计算 前一个 午夜:

    from datetime import timedelta
    
    yesterday_midnight = midnight - timedelta(days=1)
    

    那是昨天

    现在测试您的时间戳是否介于这两点之间:

    timestamp = datetime.fromtimestamp(some_timestamp_from_your_log)
    if yesterday_midnight <= timestamp < midnight:
        # this happened between 00:00:00 and 23:59:59 yesterday
    

    现在都在一起了

    合并为一个功能:

    from datetime import datetime, time, timedelta
    
    def is_yesterday(timestamp):
        midnight = datetime.combine(datetime.today(), time.min)
        yesterday_midnight = midnight - timedelta(days=1)
        return yesterday_midnight <= timestamp < midnight:
    
    if is_yesterday(datetime.fromtimestamp(some_timestamp_from_your_log)):
        # ...
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看