2009-11-17 944 views
5

我想编写充当时间计算器的python脚本。如何使用Python计算时间

例如:

假设现在的时间是13时05分00秒

我要添加1个小时,23分钟,10秒到它。

我想打印出答案。

如何在Python中执行此操作?

如果还包括日期,该怎么办?

+0

请出示你到目前为止的代码。这可以通过'datetime'模块或'time'模块完成。请查看这些模块并提出具体问题。 – 2009-11-17 17:59:22

回答

0

特别看mx.DateTimeDateTimeDelta

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

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

3

调查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 
9

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日期和时间为DateTime对象,请使用,然后得到的时间)。 DST是主要的罪魁祸首。例如,上午12:01 + 5小时可能是不同日子的上午4:01,上午5:01或上午6:01。

3

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

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

希望它可以帮助