You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:自定义格式整数转换为DateTime的问题求助

解决方案

你的问题核心是搞错了数据类型的含义:230523110326 是日期时间的编码值,而非Unix时间戳(从1970-01-01 UTC起的毫秒数),所以用 DateTime.fromMillisecondsSinceEpoch 完全不适用,哪怕乘以1000也没用。

正确的做法是解析这个编码的每一部分,手动构造DateTime对象:

步骤说明

  1. 将整数转为字符串,确保长度为12位(你的示例正好满足)
  2. 按两位一组分割,提取日、月、年、时、分、秒
  3. 把两位年份补全为四位(默认按2000年后处理,即23→2023)
  4. 用DateTime构造函数创建实例

代码示例(Dart)

void main() {
  int encodedDateTime = 230523110326;
  String str = encodedDateTime.toString().padLeft(12, '0'); // 确保12位,防止前导零丢失
  
  int day = int.parse(str.substring(0, 2));
  int month = int.parse(str.substring(2, 4));
  int year = 2000 + int.parse(str.substring(4, 6));
  int hour = int.parse(str.substring(6, 8));
  int minute = int.parse(str.substring(8, 10));
  int second = int.parse(str.substring(10, 12));
  
  DateTime dateTime = DateTime(year, month, day, hour, minute, second);
  print(dateTime); // 输出:2023-05-23 11:03:26.000
}

注意事项

  • 如果你的编码中年份可能包含19xx的情况,需要额外判断(比如两位年份大于50则视为19xx,否则20xx)
  • 若原始整数可能不足12位(比如日/月是个位数时缺少前导零),需要用padLeft(12, '0')补全,避免分割错误

内容的提问来源于stack exchange,提问作者I. Biraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:58:16