【Flutter 问题系列第 38 篇】DateTime 和时间戳的相互转换,DateTime 和字符串的相互转换

604 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

这是【Flutter 问题系列第 38 篇】,如果觉得有用的话,欢迎关注专栏。

一:什么是时间戳

如果你不清楚什么是时间戳,可以 点此链接 了解。

基础了解

首先看下 DateTime.now() 的打印结果,如下所示

2021-07-25 13:39:11.925361

其中,小数点后面的代表毫秒精度,一般取前 19 位,即 2021-07-25 13:39:11,然后再根据需求转换时间格式。

二:DateTime 转 时间戳

DateTime dateTime = DateTime.now(); // 2021-07-25 14:01:14.127700
int timeUnix = dateTime.millisecondsSinceEpoch; // 1627192874127

timeUnix 代表当前时间所对应毫秒精度的时间戳(13位),如果你想要秒级精度(10位)除以 1000 即可,此值与时区无关。

三:时间戳转 DateTime

int timeUnix = 1627192874127;
DateTime now = DateTime.fromMillisecondsSinceEpoch(timeUnix); // 2021-07-25 14:01:14.127

可以看到,时间戳在转换为 DateTime 时,毫秒精度变为了小数点后三位,而不是六位了。

四:DateTime 转 字符串

DateTime dateTime = DateTime.now(); // 2021-07-25 14:08:27.375525
String timeStr = dateTime.toString(); // 2021-07-25 14:08:27.375525

虽然值看着一样,但类型却不一样,前者为 DateTime 类型,后者为 String 类型。

五:字符串 转 DateTime

String time = "2021-07-25 14:12:59.055365"; // 2021-07-25 14:12:59.055365
DateTime dateTime = DateTime.parse(time); // 2021-07-25 14:12:59.055365

同理,虽然值看着一样,但类型却不一样,前者为 String 类型,后者为 DateTime 类型。

需要注意,字符串一定要按照 DateTime 显示的格式定义,否则在解析时会报错。

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

Google 的 Flutter 越来越火,截止 2021年7月25日 GitHub 标星已达 125K,Flutter 毅然是一种趋势,所以作为前端开发者,没有理由不趁早去学习。

无论你是 Flutter 新手还是已经入门了,不妨先点个关注,后续我会将 Flutter 中的常用组件(含有源码分析、组件的用法及注意事项)以及可能遇到的问题写到稀土掘金博客中,希望自己学习的同时,也可以帮助更多的人。