私はローカルタイムゾーンの次の分の開始まで眠るコードを書こうとしていますが、そうするのが非常に困難です。 time
ライブラリは常に私の弱点の1つであり、私はこれを行う簡単な方法がいくつかあると仮定しています。次の分の開始まで眠る
新しいTimeOfDayを計算すると思っていましたが、23:59から00:00までは処理できず、夏時間の切り替えに非常に混乱することでしょう。
ハンドリングの閏秒も素晴らしいボーナスになります。
Control.Concurrent.threadDelayを使って睡眠をするのは、私にとって最も簡単な方法のように思えるので、次のような質問があります。次の分が始まるまでのマイクロ秒数はどうすればわかりますか? DiffTime
およびNominalDiffTime
は、これを達成するための完全に許容可能な方法です。
現在の時刻の秒のコンポーネントを取得してから60秒間スリープできますか?飛躍的に離れていて、合理的にうまくいくはずです。どのくらい正確に起床したいですか? –
完全に手作業で計算しなくても実際にそれを行う方法が他にない場合はうまくいくでしょうが、同じデータを得ることができる精度を失うのは残念です。しかし、それほど大きな問題ではない。 2分遅れでも問題ありませんが、次の分が始まる前に目を覚まさないようにしたいと思います。エラーは次の分だけ修正されます。確かに、うるう秒はあまり一般的ではありません。 – ehird
うーん、 'UTCTime'のドキュメンテーションは、うるう秒が' getCurrentTime'のような測定アクションによって処理されないことを暗示しているようです。秒フィールドは実際にはピコ秒の精度で与えられるので、私が望むことができる最高の精度が得られます。私はそれを試してみましょう。 – ehird