void main(List<String> args) {
var value = 230523110326;
var svalue = value.toString();
var list = <int>[];
for (var i = 0; i < svalue.length/2; i++) {
var ss = svalue.substring(2*i, 2*i+2);
if (i==2) ss = '20$ss';
list.add(int.parse(ss));
}
var dt = DateTime(list[2],list[1],list[0],list[3],list[4],list[5]);
print(dt);
print('\nJob done!');
}
3条答案
按热度按时间dvtswwa31#
我的朋友
fromMillisecondsSiceEpoch
不是你想的那样阅读更多关于Epoch:简单解释:
在编程和时间系统中,“历元”通常是指用作计算其他时间值的参考的固定时间点。历元通常是时间计算过程中的特定日期、起点或重要标记。
在Flutter中的
DateTime.fromMillisecondsSinceEpoch
中,epoch通常指的是“Unix epoch”或“Unix timestamp”。它被定义为1970年1月1日00:00:00 UTC。DateTime.fromMillisecondsSinceEpoch
方法希望您提供自Unix纪元以来的毫秒时间值。然后,它返回该时刻的相应DateTime对象。你的情况应该怎么办?
手工做,使用方法
String. substring(first, last)
来得到一个一个的日期,月,年,小时,分钟,秒。示例:agxfikkp2#
输出:
8mmmxcuj3#
如果你的输入已经是一个整数,你可以做整数运算来提取部分:
参见https://stackoverflow.com/a/76273568/了解如何将两位数的year转换为四位数的yaer。
最后,我想指出的是,目前还不清楚您的时间戳格式应该是
ddMMyy
还是yyMMdd
,因为您的特定示例模糊地使用了23
来表示日和两位数的年。上面的代码假设ddMMyy
匹配您列出的顺序,但是yyMMdd
对于整数时间戳更合理,因为它允许使用整数比较来比较(大多数)时间戳。(然而,使用两位数年份而不是四位数年份意味着这种比较在2000年之前的年份中无法正常工作。