【问题标题】:How to create a DateTime equal to 15 minutes ago?如何创建一个等于 15 分钟前的 DateTime?
【发布时间】:2011-05-31 07:25:16
【问题描述】:

我需要创建一个表示当前时间减去 15 分钟的 DateTime 对象。

【问题讨论】:

标签: python datetime


【解决方案1】:

导入日期时间,然后导入神奇的 timedelta 内容:

In [63]: datetime.datetime.now()
Out[63]: datetime.datetime(2010, 12, 27, 14, 39, 19, 700401)

In [64]: datetime.datetime.now() - datetime.timedelta(minutes=15)
Out[64]: datetime.datetime(2010, 12, 27, 14, 24, 21, 684435)

【讨论】:

  • 注意,在 Python 3 中,您需要将时区传递给 now() 以避免在减去原始偏移量和可感知偏移量的日期时间时出错:datetime.datetime.now(datetime.timezone.utc)
  • @nornagon 在这里根本不适用;无论 datetime 对象是有意识的还是天真的,减去 timedelta 都可以。
【解决方案2】:
 datetime.datetime.now() - datetime.timedelta(minutes=15)

【讨论】:

    【解决方案3】:

    这很简单:

    datetime.datetime.now() - datetime.timedelta(minutes = 15)
    

    timedeltas 专门设计用于允许您在datetimes 中减去或添加增量(差异)。

    【讨论】:

      【解决方案4】:

      如果您想查看更多示例,我提供了两种方法来执行几分钟以及几年和几小时:

      import datetime
      print(datetime.datetime.now())
      print(datetime.datetime.now() - datetime.timedelta(minutes = 15))
      print(datetime.datetime.now() + datetime.timedelta(minutes = -15))
      print(datetime.timedelta(hours = 5))
      print(datetime.datetime.now() + datetime.timedelta(days = 3))
      print(datetime.datetime.now() + datetime.timedelta(days = -9))
      print(datetime.datetime.now() - datetime.timedelta(days = 9))
      

      我得到以下结果:

      2016-06-03 16:04:03.706615
      2016-06-03 15:49:03.706622
      2016-06-03 15:49:03.706642
      5:00:00
      2016-06-06 16:04:03.706665
      2016-05-25 16:04:03.706676
      2016-05-25 16:04:03.706687
      2016-06-03
      16:04:03.706716
      

      【讨论】:

        【解决方案5】:
        import datetime 
        datetime.datetime.now() - datetime.timedelta(0, 900)
        
        Actually 900 is in seconds. Which is equal to 15 minutes. `15*60 = 900`
        

        【讨论】:

        • 您的导入与代码不匹配;您导入 timedelta 但随后使用 datetime 属性。要么导入模块,要么添加类型。
        【解决方案6】:

        timedelta 对象之外使用 DateTime http://docs.python.org/library/datetime.html

        datetime.datetime.now()-datetime.timedelta(minutes=15)

        【讨论】:

          【解决方案7】:

          只有 Python 3.7 中的以下代码对我有用

          from datetime import datetime,timedelta    
          print(datetime.now()-timedelta(seconds=900))
          

          【讨论】:

          • 这与这里的旧答案没有什么不同。
          • 是的,它是不同的。 datetime.timedelta(..) 不起作用
          【解决方案8】:

          datetime.datetime.now() - datetime.timedelta(0, 15 * 60)

          timedelta 是“时间变化”。第一个参数需要几天,第二个参数需要几秒钟。 15 * 60 秒是 15 分钟。

          【讨论】:

            【解决方案9】:

            如果您使用time.time() 并希望时间戳作为输出

            简单使用

            CONSTANT_SECONDS = 900 # time  in seconds (900 seconds = 15 min)
            
            current_time = int(time.time())
            time_before_15_min = current_time - CONSTANT_SECONDS
            

            您可以根据需要更改 900 秒。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-08-31
              • 2017-08-26
              • 1970-01-01
              • 1970-01-01
              • 2011-10-20
              • 1970-01-01
              • 1970-01-01
              • 2018-06-02
              相关资源
              最近更新 更多