Python вычитание двух строк даты
у меня есть две строки, содержащие дату, так как"
start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'
мне нужно выполнить: end_date - start_date
Он должен возвращать количество секунд, разделяющих даты окончания и начала.
эти данные извлекаются из api twitter. Это то, что дает мне json. Поскольку это похоже на часто используемую строку, я предполагаю, что есть библиотека или метод, который может справиться с этим. Я просто не могу его найти. Спасибо!
7 ответов
вот полный ответ:
from datetime import datetime
start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'
def __datetime(date_str):
return datetime.strptime(date_str, '%a %b %d %H:%M:%S +0000 %Y')
start = __datetime(start_date)
end = __datetime(end_date)
delta = end - start
print delta # prints: 1 day, 7:50:05
print delta.total_seconds() # prints: 114605.0
как же ты выглядишь?
в Python!--7-->datetime модуль проанализирует этот формат и позволит вам выполнить арифметику на результирующих объектах.вот пример кода:
a = datetime.datetime.strptime("Sun Sep 16 16:05:15 +0000 2012", "%a %b %d %H:%M:%S +0000 %Y")
обратите внимание, что в Windows (где я пытался выше),%z
директива, похоже, не поддерживается, поэтому +0000
часть жестко. Если вы ожидаете, что эта часть (смещение UTC) изменится, вам нужно будет обработать это на отдельном шаге, если вы не можете проверить это %z
работает для вас.
просмотр модуля datetime (http://docs.python.org/2/library/datetime.html ) Он имеет методы для манипуляции даты каждого вида
использовать datetime.strptime()
для разбора строки в соответствии с Кодексом формате. В вашем случае формат будет чем-то вроде "%a %b %d %H:%M:%S %z %Y"
. (примечание: Я не тестировал этот формат разбора.)
детали:http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
затем вы можете вычесть datetime
объекты и получить timedelta
"объект".
или вы можете использовать одну из оболочек API Python Twitter, перечисленных на странице разработчика Twitter, которая, вероятно, сделайте преобразование для вас:https://dev.twitter.com/docs/twitter-libraries#python
используйте datetime.метод strptime для преобразования строки в объект datetime. Вы можете найти необходимые форматы здесь:http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
в вашем случае:
%сокращенное имя дня недели локали.
сокращенное имя месяца локали %b.
%d день месяца в виде десятичного числа [01,31].
%H час (24-часовые часы) как десятичное число [00,23].
%М Минута как десятичное число [00,59].
%S секунда в виде десятичного числа [00,61].
%Y год с веком в качестве десятичного числа.
% Z смещение UTC в форме +HHMM или -HHMM (пустая строка, если объект является наивным).
можно разобрать даты, используя даты.значение datetime.strptime (), то вы можете делать арифметические манипуляции?
из datetime импортировать datetime
start_date = 'Sun Sep 16 16:05:15 +0000 2012'
end_date = 'Sun Sep 17 23:55:20 +0000 2012'
def __datetime(date_str):
return datetime.strptime(date_str, '%a %b %d %H:%M:%S +0000 %Y')
start = __datetime(start_date)
end = __datetime(end_date)
delta = end - start
print(delta)
print(delta.total_seconds())
hours = (delta.total_seconds())/3600
print("Hours %s" % hours)
minutes = (delta.total_seconds())//3600
print("minutes %s" % minutes)
print(divmod(delta.total_seconds(), 3600))
h, m = divmod(delta.total_seconds(), 3600)
print(h)
print(m)
M, s = divmod(m, 60)
print(M)
print(s)