Python: разница двух строк timedate - PullRequest
2 голосов
/ 29 сентября 2011

У меня есть две строки даты (взяты из пользовательского ввода и могут сильно различаться)

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

Я хочу найти разницу между этими двумя значениями в минутах.

Как мне поступить, чтобы заняться этим?

Ответы [ 4 ]

4 голосов
/ 29 сентября 2011

Используя модуль datetime, проанализируйте объект datetime, используя strptime, затем вычтите. Вы получите timedelta. Затем используйте timedelta.total_seconds() и разделите на 60.

4 голосов
/ 29 сентября 2011
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/

3 голосов
/ 29 сентября 2011

Используйте 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

Если вы ищете произвольный анализ строки даты, проверьте DateUtil и функцию анализа .

0 голосов
/ 29 сентября 2011

Модуль 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"
...