【问题标题】:Python subtract two dates in minutesPython 在几分钟内减去两个日期
【发布时间】:2012-10-17 01:33:57
【问题描述】:
date1 = datetime.datetime(2012, 10, 10, 10, 15, 44)
date2 = datetime.datetime(2012, 10, 17, 8, 45, 38)
roundedA = date2.replace(second = 0, microsecond = 0)
print roundedA
roundedB = date1.replace(second = 0, microsecond = 0)
print roundedB
minutes = (roundedA - roundedB).min
print minutes

结果是:

-999999999 days, 0:00:00

我想计算 2 个不同的日期差异。我在上面减去了,但它并没有给我想要的东西。如何减去两个日期并在几分钟或几小时内得到结果。

【问题讨论】:

  • 为什么不从结果中取出dayshours 并相应地相乘?
  • 但是,我想准确一点!,它可能会消除一些分钟差异

标签: python


【解决方案1】:

timedelta.min 属性不代表分钟 - 它表示可能的最小时间增量(请参阅here)。如果你想在几分钟内得到它,你可以这样做:

d = roundedA - roundedB
minutes = d.days * 1440 + d.seconds / 60

这是因为 timedelta 内部仅存储秒和天。

【讨论】:

    【解决方案2】:

    您也可以使用 time 模块以秒为单位获得减法结果:

    import time
    import datetime
    date1 = datetime.datetime(2012, 10, 10, 10, 15, 44)
    date2 = datetime.datetime(2012, 10, 17, 8, 45, 38)
    var1 = time.mktime(date1.timetuple())
    var2 = time.mktime(date2.timetuple())
    result_in_seconds = var2 - var1
    
    >>> var2 - var1
    599394.0
    

    或者使用answer提供的函数

    >>> def days_hours_minutes(td):
    ...     return td.days, td.seconds//3600, (td.seconds//60)%60
    ... 
    >>> date2 - date1
    datetime.timedelta(6, 80994)
    >>> days_hours_minutes(datetime.timedelta(6, 80994))
    (6, 22, 29)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      相关资源
      最近更新 更多