我正在创建一个应用程序,它可以查看日出和日落,以查看白天/夜间的持续时间(以小时为单位)。目前,我有两个python datetime对象,它们表示持续时间的开始和结束时间,并且我已经在datetime对象中有日落和日出的时间。我知道我的代码非常混乱,但当我知道我在处理这个问题时,我会修复它
到目前为止,我的代码是:
if(datetime_object_1 <= datetime_object_2 <= sunrise <= sunset):
return (0,differencehours(datetime_object_1, datetime_object_2))
elif(datetime_object_1 <= sunrise <= datetime_object_2 <= sunset):
return (differencehours(datetime_object_2, sunrise), differencehours(datetime_object_1, sunrise))
elif(sunrise <= datetime_object_1 <= datetime_object_2 <= sunset):
return (differencehours(datetime_object_1, datetime_object_2),0)
elif(sunrise <= datetime_object_1 <= sunset <= datetime_object_2):
return (differencehours(datetime_object_1, sunset), differencehours(datetime_object_2, sunset))
elif(sunrise <= sunset <= datetime_object_1 <= datetime_object_2):
return (0,differencehours(datetime_object_1, datetime_object_2))
else:
return (None, None)
def difference(datetime_str_1, datetime_str_2):
if(datetime_object_1 > datetime_object_2):
datetime_object_1_replace = datetime_object_1
datetime_object_2_replace = datetime_object_2
datetime_object_2 = datetime_object_1_replace
datetime_object_1 = datetime_object_2_replace
difference = datetime_object_2 - datetime_object_1
return difference
def differencehours(datetime_str_1, datetime_str_2):
return (difference(datetime_str_1, datetime_str_2).total_seconds / 3600.0)
在python中查找datetime对象之间的时间差非常非常简单。就像
delta = datetime1 - datetime2
一样简单。要在几秒钟内获得它,请使用delta.total_seconds()
演示:正如Zen of Python所说,
Simple is better than complex.
如果您使用一个简单的逻辑来计算夜间/白天的工作时间,然后从总工作时间中减去它,分别得到白天/夜间,那么您可以大大简化代码
你不需要那么多
if else
下面的代码可以实现此目的:
输出:
相关问题 更多 >
编程相关推荐