【问题标题】:python: difference of two timedate stringspython:两个时间日期字符串的差异
【发布时间】:2011-09-29 18:30:06
【问题描述】:

我有两个日期字符串(取自用户输入,可能会有很大差异)

s1 = '2011:10:01:10:30:00'
s2 = '2011:10:01:11:15:00'

我希望以分钟为单位找出两者之间的差异。

我应该如何着手解决这个问题?

【问题讨论】:

标签: python datetime datediff


【解决方案1】:
import datetime

d1 = datetime.datetime.strptime('2011:10:01:10:30:00', '%Y:%m:%d:%H:%M:%S')
d2 = datetime.datetime.strptime('2011:10:01:11:15:00', '%Y:%m:%d:%H:%M:%S')
diff = (d2 - d1).total_seconds() / 60

如果您需要处理任意日期时间格式,我认为内置的日期时间库不会为您做到这一点。也许看看类似的东西:

http://www.egenix.com/products/python/mxBase/mxDateTime/

【讨论】:

    【解决方案2】:

    使用datetime 模块,使用strptime 解析成datetime 对象,然后减去。你会得到一个timedelta。然后用timedelta.total_seconds()除以60。

    【讨论】:

      【解决方案3】:

      使用datetime 解析字符串并转换为基本纪元时间。算一算。转换回来:

      >>> from datetime import datetime
      >>> s1 = '2011:10:01:10:30:00'
      >>> s2 = '2011:10:01:11:15:00'
      >>> d1=datetime.strptime(s1,'%Y:%m:%d:%I:%M:%S')
      >>> d2=datetime.strptime(s2,'%Y:%m:%d:%I:%M:%S')
      >>> d2-d1
      datetime.timedelta(0, 2700)
      >>> (d2-d1).total_seconds()/60
      45.0
      

      如果您正在寻找任意日期字符串解析,请查看 DateUtilparse function

      【讨论】:

        【解决方案4】:

        time 模块可以对此有所帮助。

        import time
        
        s1 = '2011:10:01:10:30:00'
        s2 = '2011:10:01:11:15:00'
        
        s1Time = time.strptime(s1, "%Y:%m:%d:%H:%M:%S")
        s2Time = time.strptime(s2, "%Y:%m:%d:%H:%M:%S")
        
        deltaInMinutes = (time.mktime(s2Time) - time.mktime(s1Time)) / 60.0
        print deltaInMinutes, "minutes"
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-15
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多