You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Web获取当前微秒时间末尾含三个零,如何精确获取?

Flutter Web 获取微秒级时间的问题解答
  • 为什么DateTime.now().microsecondsSinceEpoch末尾带三个零?
    Flutter Web 底层依赖浏览器的 JavaScript API,DateTime.now()实际上调用了 JS 的Date.now()方法——这个方法只能返回毫秒级的时间戳(从纪元到现在的毫秒数)。当 Flutter 将其转换为微秒时,只是简单乘以 1000,所以结果末尾必然是三个零,并没有真正的微秒精度。

  • 有没有办法在Web端获取精确的微秒级时间?
    可以借助浏览器的performance.now() API 实现近似的微秒级精度:
    这个方法返回页面加载完成后到当前的高精度时间(精度可达微秒级别,不同浏览器可能略有差异),结合Date.now()(纪元毫秒时间)就能计算出带微秒精度的纪元时间:

    import 'dart:js' as js;
    
    int getMicrosecondsSinceEpoch() {
      // 获取纪元毫秒时间
      int epochMs = DateTime.now().millisecondsSinceEpoch;
      // 获取页面加载后的高精度时间(毫秒小数形式)
      double perfNow = js.context['performance'].callMethod('now');
      // 提取小数部分转成微秒,加到纪元毫秒转的微秒上
      return epochMs * 1000 + (perfNow % 1 * 1000).round();
    }
    

    注意:performance.now()的精度可能会被浏览器做安全限制(比如防指纹追踪),但这已经是Web端能获取的最高精度时间了,虽无法达到原生端真正的微秒级精度,但比单纯的DateTime.now().microsecondsSinceEpoch要精确得多。

内容的提问来源于stack exchange,提问作者Rami Dhouib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:14:51