Dart:日期时间中的微秒始终为 0

问题描述 投票:0回答:2

总是当我想使用

microsecond
DateTime
时,它总是返回
0

所以我做了这个测试并将微秒设置为

345

void main () {
  DateTime duration = DateTime(2024, 1, 1, 0, 0, 0, 0, 345);

  print(duration.microsecond);
  print(duration.millisecond);

  print(duration);
}

这就是我得到的:

0
0
2024-01-01 00:00:00.000

如果我将微秒设置为

>=500
(exp:
675
),这就是结果:

0
1
2024-01-01 00:00:00.001

这是错误还是我遗漏了什么?

flutter dart datetime
2个回答
0
投票

“问题”是 Flutter 在 DateTime 对象中舍入微秒,因为它的内部时间无法处理微秒之间的值。它只是将其截断到最接近的整微秒。

要获得超精确微秒的乐趣,请改用 Duration 类。它允许您创建具有特定微秒值的持续时间,无需舍入!

代码

Duration duration = Duration(microseconds: 345);
print(duration.inMicroseconds); // Prints 345

0
投票

如果您使用

dart
命令尝试代码,它会打印实际的微秒(在您的情况下为 345),但在 flutter 中,存在一些特定于平台的限制。例如,当使用 Flutter 进行 Web 开发时,浏览器将计时分辨率限制为毫秒,因此不会报告微秒,但同样,使用 android(我现在已经测试过),会返回实际值。

© www.soinside.com 2019 - 2024. All rights reserved.