python: difference of two timedate strings

前端 未结 4 615
情深已故
情深已故 2021-01-13 11:53

I have two date strings (taken from user input and can vary greatly)

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

I wish to fi

相关标签:
4条回答
  • 2021-01-13 12:24

    Using the datetime module, parse into a datetime object using strptime, then subtract. You'll get a timedelta. Then use timedelta.total_seconds() and divide by 60.

    0 讨论(0)
  • 2021-01-13 12:25

    Use datetime to parse the string and convert into a base epoch time. Do the math. Convert back:

    >>> 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
    

    If you are looking for arbitrary date string parsing, check out DateUtil and the parse function.

    0 讨论(0)
  • 2021-01-13 12:41

    The time module can be helpful for this.

    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"
    
    0 讨论(0)
  • 2021-01-13 12:45
    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
    

    If you need to handle arbitrary datetime formats, I don't believe the built in datetime library will do that for you. Perhaps check out something like:

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

    0 讨论(0)
提交回复
热议问题