time - 在 OCaml 中以毫秒精度获取当前秒数
问题描述
我想以毫秒精度获得当前的秒数。有效值可以是:23.432
、51.027
等,整数部分在 1-60(分钟中的秒数)范围内,小数部分是毫秒 (0-999)。
我发现标准库可以通过执行以下操作给我几秒钟:
let t = Unix.localtime (Unix.time ())
Printf.printf "Current seconds value %02d\n" t.tm_sec
但是使用这种方法我没有得到毫秒。我可以使用 获得毫秒精度(甚至更多)Unix.gettimeofday ()
,但是我必须弄清楚如何将该值的小数部分添加到当前秒数,这对于这种简单的操作来说似乎很麻烦。有没有更好的办法?
解决方案
Unix.gettimeofday ()
如果您在分钟中的秒数为 0 并且所有后续分钟都为 60 秒时建立基本时间,则可以使用。最后一个闰秒是在 2016 年。因此,您可以询问(例如)2017 年 1 月 1 日开始的时间并将其用作您的基准。
我尝试了以下方法,它似乎对我有用:
let (base, _) = Unix.mktime {
tm_sec = 0;
tm_min = 0;
tm_hour = 0;
tm_mday = 1;
tm_mon = 0;
tm_year = 117;
tm_wday = 0;
tm_yday = 0;
tm_isdst = false;
}
let seconds_in_minute () =
mod_float (Unix.gettimeofday () -. base) 60.0
换句话说,一个快速测试表明,当我的计算机上显示的时间转到下一分钟时,该值又回到了 0.0。
这应该一直有效,直到时间领主添加下一个闰秒。也许这对您的目的来说已经足够了。
推荐阅读
- c# - 如何绑定到样式中的静态资源图像?
- javascript - 使用window.prompt时出现问题
- javascript - 递归读取高亮功能
- javascript - 使用 ngx-prism 突出显示 JS 语法
- powershell - 如何在发布期间使用 Azure DevOps Rest API 使用 powershell 获取发布状态(成功、失败)
- java - java计算器——清空累加器
- electron - Electron JS Mac OS X 构建失败,带有 .png 格式的托盘图标
- flutter - 使用 ModalRoute 检索参数时出错
- java - 如何使用不同的标记图标更改标记颜色
- python-3.x - Python3:从其他worker_client启动dask.distributed.worker_client时出现模棱两可的错误