在 Flutter 中为 DateTime 转换似乎无法正常工作

Posted

技术标签:

【中文标题】在 Flutter 中为 DateTime 转换似乎无法正常工作【英文标题】:convert for DateTime in Flutter does not seem to work correctly 【发布时间】:2020-08-29 23:56:42 【问题描述】:

以毫秒为单位的转换与转换后的原始版本不同。 微秒转换工作正常。

测试代码:

print("---Milliseconds:");
DateTime dateTimeStart = DateTime.now();
print("Datetime: $dateTimeStart");
int milliseconds = dateTimeStart.millisecondsSinceEpoch;
print("Milliseconds: $milliseconds");
DateTime dateTimeEnd = DateTime.fromMillisecondsSinceEpoch(milliseconds);
print("DateTimeEnd: $dateTimeEnd");
print("---Microseconds:");
print("Datetime: $dateTimeStart");
int microseconds = dateTimeStart.microsecondsSinceEpoch;
print("Microseconds: $microseconds");
DateTime dateTimeEnd2 = DateTime.fromMicrosecondsSinceEpoch(microseconds);
print("DateTimeEnd2: $dateTimeEnd2");

输出:

I/flutter (26574):---毫秒: I/flutter (26574): 日期时间: 2020-05-13 18:40:12.675351 I/flutter (26574):毫秒:1589388012675 I/flutter (26574): DateTimeEnd: 2020-05-13 18:40:12.675 I/flutter (26574):---微秒: I/flutter (26574): 日期时间: 2020-05-13 18:40:12.675351 I/flutter (26574):微秒:1589388012675351 I/flutter (26574): DateTimeEnd2: 2020-05-13 18:40:12.675351

还是我在某个地方有错误?


颤振医生 -v [√] Flutter (Channel stable, v1.17.0, on Microsoft Windows [Version 10.0.18362.836], locale de-DE) • Flutter 版本 1.17.0,位于 C:\androidStudio\FlutterSDK\flutter • 框架修订e6b34c2b5c(11天前),2020-05-02 11:39:18 -0700 • 引擎修订版 540786dd51 • Dart 版本 2.8.1

[√] Android 工具链 - 为 Android 设备开发(Android SDK 版本 28.0.3) • C:\Users\richa\AppData\Local\Android\sdk 中的 Android SDK • 平台 android-29,构建工具 28.0.3 • Java 二进制文件位于:C:\Program Files\Android\Android Studio\jre\bin\java • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_212-release-1586-b04) • 接受所有 Android 许可证。

[√] Android Studio(3.6版) • C:\Program Files\Android\Android Studio 中的 Android Studio • Flutter 插件版本 44.0.2 • Dart 插件版本 192.7761 • Java 版 OpenJDK 运行时环境(内部版本 1.8.0_212-release-1586-b04)

[√] VS 代码(版本 1.45.0) • C:\Users\richa\AppData\Local\Programs\Microsoft VS 代码中的 VS 代码 • Flutter 扩展版本 3.10.1

[√] 已连接设备(1 个可用) • SM J510UN • a29a4ea7 • android-arm • Android 6.0.1 (API 23)

• 未发现任何问题!

【问题讨论】:

【参考方案1】:

这不是错误。当您进行毫秒转换时,您将失去使用微秒提供的更高精度。当您使用毫秒时,您将丢弃 DateTime 包含的所有额外微秒。

【讨论】:

@user13535406 这有意义吗?

以上是关于在 Flutter 中为 DateTime 转换似乎无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:Firebase FieldValue.serverTimestamp() 到 DateTime 对象

Flutter 学习 之 时间转换工具类

如何将 toIso8601String 转换为 Swift 日期

在 C# 中为 Mysql 完成的错误转换?

在 SQL Server 中将字符串转换为日期

Flutter将时间字符串转为在xxx之前(类似于微信格式)