当我得到 endDate.millisecondsSinceEpoch 和 startDate.millisecondsSinceEpoch 之间的差异时,它会给我结果加上 2 小时?
When i get the difference between endDate.millisecondsSinceEpoch and startDate.millisecondsSinceEpoch it gives me the result plus 2 hours?
我想知道endDate
和startDate
的区别
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
我想知道endDate
和startDate
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