Как использовать Python для расчета времени - PullRequest
8 голосов
/ 17 ноября 2009

Я хочу написать скрипт на Python, который будет действовать как калькулятор времени.

Например:

Предположим, что время уже 13: 05: 00

Я хочу добавить к нему 1 час, 23 минуты и 10 секунд.

и я хочу напечатать ответ.

Как мне это сделать в Python?

Что делать, если дата также участвует?

Ответы [ 5 ]

11 голосов
/ 17 ноября 2009

datetime.timedelta предназначен для фиксированных временных разниц (например, 1 день фиксирован, 1 месяц - нет).

>>> import datetime
>>> t = datetime.time(13, 5)
>>> print t
13:05:00
>>> now = datetime.datetime.now()
>>> print now
2009-11-17 13:03:02.227375
>>> print now + datetime.timedelta(hours=1, minutes=23, seconds=10)
2009-11-17 14:26:12.227375

Обратите внимание, что не имеет смысла делать сложение только по времени (но вы можете объединить дату и время в объект datetime, использовать их, а затем получить время). DST является основным виновником. Например, 12:01 + 5 часов могут быть 4:01, 5:01 или 6:01 в разные дни.

5 голосов
/ 31 января 2018

Для расчета даты и времени есть несколько вариантов, но я напишу простой способ:

import datetime
import dateutil.relativedelta

# current time
date_and_time = datetime.datetime.now()
date_only = date.today()
time_only = datetime.datetime.now().time()

# calculate date and time
result = date_and_time - datetime.timedelta(hours=26, minutes=25, seconds=10)

# calculate dates: years (-/+)
result = date_only - dateutil.relativedelta.relativedelta(years=10)

# months
result = date_only - dateutil.relativedelta.relativedelta(months=10)

# days
result = date_only - dateutil.relativedelta.relativedelta(days=10)

# calculate time 
result = date_and_time - datetime.timedelta(hours=26, minutes=25, seconds=10)
result.time()

Надеюсь, это поможет

4 голосов
/ 17 ноября 2009

Просмотр datetime.timedelta .

Example
>>> from datetime import timedelta
>>> year = timedelta(days=365)
>>> another_year = timedelta(weeks=40, days=84, hours=23,
...                          minutes=50, seconds=600)  # adds up to 365 days
>>> year == another_year
True
>>> ten_years = 10 * year
>>> ten_years, ten_years.days // 365
(datetime.timedelta(3650), 10)
>>> nine_years = ten_years - year
>>> nine_years, nine_years.days // 365
(datetime.timedelta(3285), 9)
>>> three_years = nine_years // 3;
>>> three_years, three_years.days // 365
(datetime.timedelta(1095), 3)
>>> abs(three_years - ten_years) == 2 * three_years + year
True
2 голосов
/ 17 ноября 2009

Посмотрите на mx.DateTime и DateTimeDelta, в частности.

import mx.DateTime
d = mx.DateTime.DateTimeDelta(0, 1, 23, 10)
x = mx.DateTime.now() + d
x.strftime()

Имейте в виду, что время - это довольно сложная вещь для работы. Високосные годы и високосные секунды - это только начало ...

0 голосов
/ 17 ноября 2009

Класс datetime в python предоставит все, что вам нужно. Он поддерживает сложение, вычитание и многие другие операции.

http://docs.python.org/library/datetime.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...