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
。不管怎样-为什么要使用毫秒历元的
,我想在你的情况下,你需要的是
持续时间,而不是
日期时间
我需要日期时间来获得小时、分钟、秒,以便在倒计时中使用它们,但是持续时间给我小时,分钟,在康舍的倒计时示例中