Flutter中DateFormat处理DateTime.fromMillisecondsSinceEpoch(0)结果异常
问题原因及解决方案
原因
DateTime.fromMillisecondsSinceEpoch(0)生成的是UTC标准时间的纪元起始点:1970-01-01 00:00:00.000 UTC。DateFormat默认使用设备的本地时区做格式化。如果你的设备时区为UTC+2(比如欧洲东部时间、南非标准时间等),本地时间会比UTC时间提前2小时,因此格式化后返回02:00:00.000。
解决方法
要获取UTC时间的格式化结果,需要为DateFormat指定UTC时区,有两种方式:
方式一:将DateTime转换为UTC时间后再格式化
DateFormat('HH:mm:ss.SSS').format(DateTime.fromMillisecondsSinceEpoch(0).toUtc());
方式二:直接调用DateFormat的utc()方法指定时区
DateFormat('HH:mm:ss.SSS').utc().format(DateTime.fromMillisecondsSinceEpoch(0));
执行上述任意一种代码,都会返回预期的00:00:00.000。
内容的提问来源于stack exchange,提问作者user2516069
相关产品推荐
相关产品推荐

