gpt4 book ai didi

haskell - sleep 直到下一分钟开始

转载 作者:行者123 更新时间:2023-12-02 04:32:46 27 4
gpt4 key购买 nike

我正在尝试编写一些代码来 sleep ,直到本地时区的下一分钟开始,但这样做非常困难。 time 库一直是我的弱点之一,所以我假设有一些简单的方法可以做到这一点。

我只想计算一个新的 TimeOfDay ,但这无法处理 23:59 到 00:00,并且可能会在夏令时切换时造成非常困惑的事情。

处理闰秒也是一个不错的奖励。

使用Control.Concurrent.threadDelay对我来说, sleep 似乎是最简单的方法,所以另一个问题是:如何获取下一分钟开始之前的微秒数? DiffTimeNominalDiffTime 是实现这一目标的完全可接受的方法。

最佳答案

考虑到您后来的评论,我担心这可能不是您想要的。我认为这可以容忍闰年、时区变化和日期变化,但不能容忍闰秒。

import Control.Concurrent (threadDelay)
import Data.Time.Clock

sleepToNextMinute :: IO ()
sleepToNextMinute = do t <- getCurrentTime
let secs = round (realToFrac $ utctDayTime t) `rem` 60
threadDelay $ 1000000 * (60 - secs)

main = do putStrLn "Starting..."
sleepToNextMinute
putStrLn "Minute 1"
sleepToNextMinute
putStrLn "Minute 2"

关于haskell - sleep 直到下一分钟开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8575118/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com