enter time-1 // eg 01:12
enter time-2 // eg 18:59
calculate: time-1 to time-2/12
// i.e time between 01:12 to 18:59 divided by 12
它如何在Python中完成。我是初学者,所以我真的不知道从哪里开始。计算时间1到时间2之间的时间?
编辑添加:我不想要一个计时器。用户手动输入时间1和时间2。
在此先感谢您的帮助。
enter time-1 // eg 01:12
enter time-2 // eg 18:59
calculate: time-1 to time-2/12
// i.e time between 01:12 to 18:59 divided by 12
它如何在Python中完成。我是初学者,所以我真的不知道从哪里开始。计算时间1到时间2之间的时间?
编辑添加:我不想要一个计时器。用户手动输入时间1和时间2。
在此先感谢您的帮助。
该datetime
和timedelta
类从内置的datetime
模块是你所需要的。
from datetime import datetime
# Parse the time strings
t1 = datetime.strptime('01:12','%H:%M')
t2 = datetime.strptime('18:59','%H:%M')
# Do the math, the result is a timedelta object
delta = (t2 - t1)/12
print(delta.seconds)
假设用户正在输入的字符串等"01:12"
,需要转换(以及有效)这些字符串到的分钟数,因为00:00
(例如,"01:12"
是1*60+12
,或72分钟),然后再减去一个从另一个。然后,您可以将差值以分钟为单位转换回hh:mm
形式的字符串。
最简单,最直接的可能是这样的:
def getime(prom):
"""Prompt for input, return minutes since midnight"""
s = raw_input('Enter time-%s (hh:mm): ' % prom)
sh, sm = s.split(':')
return int(sm) + 60 * int(sh)
time1 = getime('1')
time2 = getime('2')
diff = time2 - time1
print "Difference: %d hours and %d minutes" % (diff//60, diff%60)
例如,一个典型的运行可能是:
$ python ti.py
Enter time-1 (hh:mm): 01:12
Enter time-2 (hh:mm): 18:59
Difference: 17 hours and 47 minutes
+1,因为与使用datetime和timedelta相比,这是学习python的人更好的方法。我更喜欢比's','sh'和'sm'更具表现力的变量名称。 Alex,为什么要使用变量'prom'?为什么不用参数调用函数? – 2009-12-27 11:30:09
@Raja,呵呵,我的意思是在两种情况下给出不同的提示,但后来我忘了在提示中使用'prom' - 修正了。至于变量名,对于极小范围的变量,很小的名字是合适的 - 那些已经被教过来命名这样的2行变量变量'stringAsInputByTheUser','hours_in_string_form'等的类,并且从未接触过这个重要的变量关于范围的区分,应该开始接触到这个问题。 – 2009-12-27 15:36:09
delta =(t2 - t1)/ 12 TypeError:不支持的操作数类型为/:'datetime.timedelta'和'int' – 3zzy 2009-12-27 05:49:11
python 2.6中可以使用 但是,您始终可以将timedelta对象转换为整数并进行如下计算:delta.seconds/12 – iamamac 2009-12-27 06:40:25