【问题标题】:Subtract seconds from datetime in python从python中的日期时间减去秒
【发布时间】:2014-07-24 09:38:43
【问题描述】:

我有一个实际上是秒的 int 变量(让我们调用该秒数X)。我需要得到当前日期和时间(日期时间格式)减去X 秒的结果。

示例

如果X是65,当前日期是2014-06-03 15:45:00,那么我需要得到2014-06-03 15:43:45的结果。

环境

我在 Python 3.3.3 上执行此操作,我知道我可能可以使用 datetime 模块,但到目前为止我还没有取得任何成功。

【问题讨论】:

  • 您应该查看datetime 中的timedelta 类。它允许您指定一个时间长度,然后可以从 datetime 对象中添加/减去该时间长度。

标签: python datetime python-3.x


【解决方案1】:

确实使用了datetime 模块:

import datetime

X = 65
result = datetime.datetime.now() - datetime.timedelta(seconds=X)

您应该阅读此软件包的documentation 以了解如何使用它!

【讨论】:

  • 工作量太大了,谢谢你的回答:)
【解决方案2】:

考虑使用dateutil.relativedelta,而不是datetime.timedelta

>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta
>>> now = datetime.now()
>>> now
datetime.datetime(2014, 6, 3, 22, 55, 9, 680637)
>>> now - relativedelta(seconds=15)
datetime.datetime(2014, 6, 3, 22, 54, 54, 680637)

在这种 15 秒增量的情况下,与使用 stdlib timedelta 相比没有优势,但 relativedelta 支持更大的单位,例如月或年,它可以更准确地处理一般情况(例如闰年和夏令时转换期间需要特殊处理)。

【讨论】:

    【解决方案3】:

    要扩展@julienc 的答案, (以防对某人有帮助)

    如果您允许 X 接受正数或负数,并且将减法语句更改为加法语句,那么您可以拥有更直观的时间调整功能(因此您不必将负数添加到负数以获得正数)像这样:

    def adjustTimeBySeconds(time, delta):
        return time + datetime.timedelta(seconds=delta)
    
    time = datetime.datetime.now()
    X = -65
    print(adjustTimeBySeconds(time, X))
    X = 65
    print(adjustTimeBySeconds(time, X))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 2020-01-27
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多