我编写了一个太阳能电池板调整程序,该程序可将电池板移动到太阳位置。当我计算第二天(前一天晚上)的日出时,与早晨再次计算日出时有所不同。大约要等一分钟。
该程序第二天早晨运行“夜间功能”,而不是启动“白天功能”。通过故障排除,我发现日出时间在变化,这取决于我是在前一天晚上还是早上进行计算。
ast = Astral()
city_Name = 'Cleveland'
local_City = ast[city_Name]
def get_Current_Time():
eastern = pytz.timezone('America/New_York')
curr_Time = datetime.now(eastern)
return curr_Time
def solar_Adjust_Deactive():
global local_City
curr_Time = get_Current_Time()
calc_Tomorrow = curr_Time + timedelta(days=1)
sun_Position_Tomorrow = local_City.sun(local=True, date = calc_Tomorrow)
solar_Sunrise_Tomorrow = sun_Position_Tomorrow.get('sunrise')
def main_Function():
global local_City
sun_Position = local_City.sun(local=True)
current_Time = get_Current_Time()
solar_Sunrise = sun_Position.get('sunrise')
无论我是在前一天晚上还是第二天早上计算日出时间,预期结果都是相同的。
实际结果: 明天日出2019-04-30 06:23:29-04:00(前一天晚上计算) 今日日出2019-04-30 06:24:38-04:00(计算的早晨)
答案 0 :(得分:0)
函数astral.Location.sun
的文档字符串指出,date
输入参数应使用datetime.date
对象(即日期)。在我看来,当给定datetime.datetime
对象(即日期和时间)作为输入时,该函数会感到困惑并产生不正确的结果。这可能解释了代码中的奇怪行为。
因此,尝试用calc_Tomorrow = curr_Time + timedelta(days=1)
替换代码中的calc_Tomorrow = curr_Time.date() + timedelta(days=1)
。