Datetime 当我得到endDate.millissecondssinceepoch和startDate.millissecondssinceepoch之间的差值时,它会给我结果加上2小时?
我想知道Datetime 当我得到endDate.millissecondssinceepoch和startDate.millissecondssinceepoch之间的差值时,它会给我结果加上2小时?,datetime,dart,flutter,duration,Datetime,Dart,Flutter,Duration,我想知道endDate和startDate int endDate=DateTime.parse(“2019-01-31 09:35:00”).millissecondssinceepoch int startDate=DateTime.parse(“2019-01-31 09:30:00”).millissecondssinceepoch 然后我得到衍射 int distance=endDate-startDate 之后,我将距离转换为日期时间 DateTime newTime=DateTim
endDate
和startDate
int endDate=DateTime.parse(“2019-01-31 09:35:00”).millissecondssinceepoch代码>
int startDate=DateTime.parse(“2019-01-31 09:30:00”).millissecondssinceepoch代码>
然后我得到衍射
int distance=endDate-startDate代码>
之后,我将距离转换为日期时间
DateTime newTime=DateTime.froms毫秒新纪元(距离)代码>
结果
02:05:00
00:05:00
预期产出
02:05:00
00:05:00
哪里出错了?本地时区的日期/时间计算容易出错。
首先转换为UTC:
int endDate =
DateTime.parse("2019-01-31 09:35:00").toUtc().millisecondsSinceEpoch;
int startDate =
DateTime.parse("2019-01-31 09:30:00").toUtc().millisecondsSinceEpoch;
int distance = endDate - startDate;
DateTime newTime = DateTime.fromMillisecondsSinceEpoch(distance, isUtc: true);
print('result: $newTime');
结果:1970-01-01 00:05:00.000Z
但正如您问题下方的评论所述,持续时间
更适合于此目的。试试这个非常简单的软件包,它的灵感来自
看起来你正试图在几分钟内获得差异。见下文
var startDate = Jiffy(DateTime(2019, 1, 31, 9, 35));
var endDate = Jiffy(DateTime(2019, 1, 31, 9, 30));
print(startDate.diff(endDate, Units.MINUTE)); // 5 minutes
您还可以获得以下单位的差异:年、月、周、日、小时、分钟、秒和毫秒。另见下文
print(startDate.diff(endDate, Units.SECOND)); // 300 seconds
print(startDate.diff(endDate, Units.MILLISECOND)); // 300000 milliseconds
可能是因为locae
。不管怎样-为什么要使用毫秒历元的,我想在你的情况下,你需要的是持续时间,而不是日期时间我需要日期时间来获得小时、分钟、秒,以便在倒计时中使用它们,但是持续时间给我小时,分钟,在康舍的倒计时示例中