日期转换这个坑碰到好几次了,必须写出来让大家避避。
直接上代码:
var d1 = new DateTime.now();
var d2 = "${d1.year}-${d1.month}-${d1.day} 00:00:00";
var now = DateTime.parse(d2);
以上代码在,10,11、12月份的10-31日期间是可以正常运行的。
写到这里大家估计就明白 了,1-9月和1-9日这些时间怎么就出错了?
如果你print(d2);
打印出来的效果是这样的:2022-1-4
看看,初看好像也没什么问题啊,时间都是对得上的。
但是你DateTime.parse(d2)就总是出错,一时摸不到头脑。
后来在这个位的时间上都加上0,改成2022-01-04,顺利完成。
这么小一个问题就能让你弄半天,吐血。
我建议大家用上第三方包 intl: ^0.17.0
var d1 = new DateTime.now();
var d2 = DateFormat('yyy-MM-dd 00:00:00').format(d1);
var now = DateTime.parse(d2).millisecondsSinceEpoch;
不需要自己去加0,直接换多香。