如何使用Python来计算时间

时间:2009-11-17 17:55:43

标签: python datetime time

我想编写一个充当时间计算器的python脚本。

例如:

假设时间现在是13:05:00

我想加1小时23分10秒。

我想打印出答案。

我如何在Python中执行此操作?

如果还涉及日期怎么办?

5 个答案:

答案 0 :(得分:11)

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

请注意,一次添加是没有意义的(但是你可以combine一个日期时间对象的日期和时间,使用它,然后得到时间)。夏令时是罪魁祸首。例如,上午12:01 + 5小时可能是凌晨4:01,上午5:01或上午6:01。

答案 1 :(得分:5)

为了计算日期和时间,有几种选择,但我会写一些简单的方法:

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

希望有所帮助

答案 2 :(得分:4)

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

答案 3 :(得分:2)

特别关注mx.DateTimeDateTimeDelta

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

请记住,时间实际上是一个相当复杂的工作。闰年和闰秒只是一个开始...

答案 4 :(得分:0)

python中的datetime类将提供您需要的一切。它支持加法,减法和许多其他操作。

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