2013-12-19 61 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

相關問題