2013-12-19 38 views
0

以下情况不起作用,有什么想法? Python是否认为8am属于同一天,所以这种情况是不可能的?检查时间是在今晚和明天早上之间

from datetime import datetime, time 
now = datetime.now() 
now_time = now.time() 
if now_time >= time(23,00) and now_time <= time(8,00): 
    try: 
     print 'hall light turning on' 
    except: 
     print 'Could not connect to Hue gateway' 
+0

使用'或'而不是'和' – Doorknob

回答

7

小时如何可以同时> = 23和< = 8?

尝试用or更换and

if now_time >= time(23,00) or now_time <= time(8,00): 
    print "night" 
-1

使用此逻辑,占当你过一天的范围:

def is_time_in_range(start, end, x): 
    #true if x is in range 
    if start <= end: 
     return start <= x <= end 
    else: 
     return start <= x or x <= end # Understand this part. 

用法示例:

import datetime 
start = datetime.time(23, 0, 0) 
end = datetime.time(8, 0, 0) 
is_time_in_range(start, end, datetime.time(23, 30, 0)) 
is_time_in_range(start, end, datetime.time(09, 30, 0)) 

第一次通话返回true第二次通话返回false

3

星体是一个模块,可以根据太阳的当前位置为您提供更准确的“夜间时间”指示。当你想自动开启或关闭使用黎明到黄昏或日落到日出和指示在自己所在的城市更有效地转向灯这是很好的退房:http://pythonhosted.org/astral/

用法示例:

import pytz 
from datetime import datetime 
from astral import Astral 
a = Astral() 
city = a['Chicago'] # Replace with your city 
now = datetime.now(pytz.utc) 
sun = city.sun(date=now, local=True) 
if now >= sun['dusk'] or now <= sun['dawn']: 
    print "It's dark outside" 
0

要了解太阳是否启动使用ephem package

#!/usr/bin/env python 
import ephem # $ pip install ephem 

observer = ephem.city('Beijing') # <-- put your city here 
sun = ephem.Sun(observer) 
sun_is_up = observer.previous_rising(sun) > observer.previous_setting(sun) 
print('day' if sun_is_up else 'night') 

的逻辑来确定昼/夜是@miara's answer。要检测曙光,请参阅Calculating dawn and sunset times using PyEphem

相关问题