Flutter:自定义格式整数转换为DateTime的问题求助
解决方案
你的问题核心是搞错了数据类型的含义:230523110326 是日期时间的编码值,而非Unix时间戳(从1970-01-01 UTC起的毫秒数),所以用 DateTime.fromMillisecondsSinceEpoch 完全不适用,哪怕乘以1000也没用。
正确的做法是解析这个编码的每一部分,手动构造DateTime对象:
步骤说明
- 将整数转为字符串,确保长度为12位(你的示例正好满足)
- 按两位一组分割,提取日、月、年、时、分、秒
- 把两位年份补全为四位(默认按2000年后处理,即
23→2023) - 用
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
相关产品推荐
相关产品推荐

