如何在日落时间增加一个小时?

时间:2018-12-06 22:01:04

标签: python time timedelta

我正在运行一个Python脚本,该脚本获取日落时间,将其与现在的时间进行比较,并在以后的时间点亮。

在一天的特定时间之间,每15分钟通过一次cron作业来运行此操作,这样它就可以覆盖全年。

但是我想做的是,如果日落之后1小时以上,则停止开灯。

为什么?我刚偏头痛时才晚上7.00左右上床睡觉。日落时灯已经亮了。我把它们关掉了。 15分钟后,我意识到我的家庭自动化计划存在严重缺陷,因为我突然被两盏突然亮起的灯惊醒了:)

这是我代码的相关部分:

url = "https://api.sunrise-sunset.org/json?lat=51.218675&lng=-1.467375"
response = requests.request("GET", url)
data=response.json() #Getting JSON Data
sunset_time_str=data['results']['sunset'] #Getting the Sunset Time

current_date=datetime.date.today() #Getting Today Date
sunset_time=datetime.datetime.strptime(sunset_time_str,'%I:%M:%S %p') #Converting String time to datetime object so that we can compare it current time
sunset_date_time=datetime.datetime.combine(current_date,sunset_time.time()) #Combine today date and time to single object
current_date_time=datetime.datetime.now()
stop_time = ??????????????????? + timedelta(hours=1)
print (stop_time)
if current_date_time > sunset_date_time:
    #turn the light on

与'?'有点关系我正在努力。我已经尝试了sunset_date_time和其他一些东西,但是我只是遇到一个错误(例如):

Traceback (most recent call last):
  File "/home/pi/libcoap/light.py", line 41, in <module>
    stop_time = sunset_date_time + timedelta(hours=1)
TypeError: 'module' object is not callable

请有人给我扔一条救生索。我进行了搜索,但是所有示例都谈到了在现在的时间上增加一个小时(或其他时间),而不是其他时间。

编辑:添加导入

from pytradfri import Gateway
from pytradfri.api.libcoap_api import APIFactory
from pytradfri.util import load_json, save_json
from time import sleep
import requests
import datetime
import time
import json
import timedelta

2 个答案:

答案 0 :(得分:1)

删除import timedelta并致电

datetime.timedelta(hours=1)

相反。

您导入了一个名为“ timedelta”的模块,并试图调用该模块,而不是该模块的功能。我找不到the one in datetime以外的名为timedelta的模块。

答案 1 :(得分:0)

实际上,我需要的是这个

from pytradfri import Gateway
from pytradfri.api.libcoap_api import APIFactory
from pytradfri.util import load_json, save_json
from time import sleep
import requests
import datetime
import time
import json
from datetime import timedelta #This is the line I was missing

url = "https://api.sunrise-sunset.org/json?lat=51.218675&lng=-1.467375"
response = requests.request("GET", url)
data=response.json() #Getting JSON Data
sunset_time_str=data['results']['sunset'] #Getting the Sunset Time

current_date=datetime.date.today() #Getting Today Date
sunset_time=datetime.datetime.strptime(sunset_time_str,'%I:%M:%S %p') #Converting String time to datetime object so that we can compar$
sunset_date_time=datetime.datetime.combine(current_date,sunset_time.time()) #Combine today date and time to single object
current_date_time=datetime.datetime.now()
stop_time = sunset_date_time + timedelta(hours=1) #This gives me the time of sunset + 1 hour
print (stop_time)

这将打印日期和日落时间+ 1小时。