总是当我想使用
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 在 DateTime 对象中舍入微秒,因为它的内部时间无法处理微秒之间的值。它只是将其截断到最接近的整微秒。
要获得超精确微秒的乐趣,请改用 Duration 类。它允许您创建具有特定微秒值的持续时间,无需舍入!
代码
Duration duration = Duration(microseconds: 345);
print(duration.inMicroseconds); // Prints 345
如果您使用
dart
命令尝试代码,它会打印实际的微秒(在您的情况下为 345),但在 flutter 中,存在一些特定于平台的限制。例如,当使用 Flutter 进行 Web 开发时,浏览器将计时分辨率限制为毫秒,因此不会报告微秒,但同样,使用 android(我现在已经测试过),会返回实际值。