我想設置一個Python程序,能夠從各個位置拉出日出/日落以觸發本地位置的燈光來象徵遙遠的日出,因爲它會 - 如果你真的在那裏。 我的意思是,如果你住在柏林,而你在12月中旬的日出/日落時間是7:45 am/4:15pm,那麼你可以在發生一些熱帶日出時點亮一些LED夏威夷)。但是,這是對當地時間的反應。拉ephem.next_rising(sun)在世界各地經緯度不同的地方
因此,使用Python的ephem和pytz,和本地時間,拉日出/日落各種位置的信息,並觸發基於每個位置的事件。
我已經設置了使用溫哥華和喬治城,法屬圭亞那作爲測試用例的測試程序,它主要作品 - 但日出/日落喬治敦是完全錯誤的。
您可以剪切,這整個事情粘貼到Python窗口進行測試,並請原諒外來時間調用,但是我覺得很有意思,看看每個時間呼叫拉。
儘管如此,你會看到的是,圭亞那日期是絕對正確的,但日出/日落是像1:53 AM/13:57 PM,這是完全重擊。 關於這可能會如此可怕,可怕的錯誤的任何想法?
修改,以去除不必要的代碼
import ephem
from datetime import datetime, timedelta
from pytz import timezone
import pytz
import time
Guyana = ephem.Observer()
Guyana.lat = '5'
Guyana.lon = '58.3'
Guyana.horizon = 0
Guyana.elevation = 80
Guyana.date = datetime.utcnow()
sun = ephem.Sun()
print("Guyana.date is ",Guyana.date)
print("Guyana sunrise is at",Guyana.next_rising(sun))
print("Guyana sunset is going to be at ",Guyana.next_setting(sun))
這樣做的結果如下:
Guyana.date is 2014/10/4 16:47:36
Guyana sunrise is at 2014/10/5 01:53:26
Guyana sunset is going to be at 2014/10/5 13:57:05
什麼是錯的這一點,是在圭亞那的實際日出今天是5 :上午40點,所以1:53:26不僅僅是幾個小時,但在很多方面都關閉了。
這是什麼,你的生活是看跌期權做你進入如此多的UTC知識的路徑? :) 幸運的是,在幼稚和意識之間,我計劃在遙遠的日落時間使用的所有時區都是赤道,並且不使用夏令時(謝天謝地)。我認爲現在無論發生什麼問題,或許與埃塞俄比亞有更多關係,因爲圭亞那的日期/時間是正確的,但日出顯然是凌晨1點53分。 – Octoth0rpe 2014-10-03 13:26:47
@ Octoth0rpe:對不起,但它不是我。這是'ephem'的文檔,需要UTC時區(我已經添加了直接引用的答案)。假設'ephem','pytz','datetime'是正確的,並且你使用它們是錯誤的 - 庫中存在錯誤,但實際錯誤更可能在代碼中,直到你有更多的經驗。關於圭亞那:將日出時間設爲UTC,然後將其轉換爲圭亞那的時區(上午1:53是什麼時候?是在圭亞那時區的UTC時間的本地時區?) – jfs 2014-10-03 13:45:40
謝謝JF,我沒有即使是諷刺,我也很認真。在UTC /日期時間等所有不同風格周圍擺弄的數量讓我感到不知所措,而且我受到一個與他們一樣大腦圍繞它的人的謙卑。關於圭亞那1:53上午日出的奇怪之處在於它幾小時甚至幾分鐘都沒有關閉。今天的日出實際上是上午5點40分,但是ephem正在報告它在1:53發生。 – Octoth0rpe 2014-10-04 16:19:48