Pythonで日の出時刻など毎日時間が変わるものに対する残り時間を計算してみる。

PythonのScheduleモジュールでは、毎日の時刻の指定はできるのですが、計算した時間をScheduleモジュールに突っ込むことは出来ないらしい。

毎日変わる時間になったら、何かをするというコマンドを作るには、sleep関数で作る必要があるとのこと。

そういうわけなので、とりあえず今度の日の出までの時間があと何秒であるかを計算するものを作ってみた。

1.とりあえずカウントダウンするものを作ってみる

import time
from datetime import datetime

t = datetime.strptime("2022/10/22 08:32", '%Y/%m/%d %H:%M')
t2 = (t - datetime.now()).seconds
print(t2)

time.sleep(t2)
print("Hello sleep")
# Hello sleep

これを動かすと。

未来の時間から今の時間を引いたら、あとt2秒ですよと表示し、t2が0秒になると「Hello sleep」と表示されます

目標の時間が人間の読める時間で記載しているので、strptimeを使って計算出来る数字にする。

datetime.now()が今の時間で、それを引き算してやるというわけです。

2.次の日の出の時間までの残り時間を計算するものを作ってみる

次の日の出時間を計算するものは、先日やったので思い出す。

LIVA君(LINUX MINT)からPython+ tweepy+PyEphemで明日の日の出と日の入り時刻をお知らせするようにしました – happyman web

import ephem
import time
from datetime import datetime

#日の出と日の入りの場所を設定
nagoya = ephem.Observer()
nagoya.lat = '35.1855875' 
nagoya.lon = '136.8990919'

#Pyephem で使用する時刻は、世界時で設定。
nagoya.date = datetime.utcnow()

#太陽の日の出を計算
sun = ephem.Sun()
sunrise = (ephem.localtime(nagoya.next_rising(sun)))

#日の出まであと何秒を計算
now = datetime.now()
time_second = (sunrise - now).seconds

print(time_second)

このコマンドを動かすと、あと何秒というのを表示してくれる。

残り時間が淡々と表示されるようになった。

3.今後の目標

これを使って日の出時間にくだらないTweetを垂れ流すようにしたい。