当我得到 endDate.millisecondsSinceEpoch 和 startDate.millisecondsSinceEpoch 之间的差异时,它会给我结果加上 2 小时?

When i get the difference between endDate.millisecondsSinceEpoch and startDate.millisecondsSinceEpoch it gives me the result plus 2 hours?

我想知道endDatestartDate

的区别

int endDate = DateTime.parse("2019-01-31 09:35:00").millisecondsSinceEpoch;

int startDate = DateTime.parse("2019-01-31 09:30:00").millisecondsSinceEpoch;

然后我得到了差异

int distance = endDate - startDate;

之后我将距离转换为日期时间

DateTime newTime = DateTime.fromMillisecondsSinceEpoch(distance);

结果

 02:05:00

预期输出

00:05:00

哪里错了?

Date/Time本地时区的计算容易出错。
首先转换为 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');

result: 1970-01-01 00:05:00.000Z

但正如您问题下方的评论中所述,Duration 更适合此目的。

试试这个非常简单的包,Jiffy that is inspired by momentjs

看来您是想在几分钟内得出差异。见下文

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