Dart 3月30日

时间:2018-07-01 22:37:00

标签: dart

小问题:

我像这样计算给定月份的天数:

new DateTime(2018, month+1, 1).difference(new DateTime(2018,month,1)).inDays

一切正常,februari给了我28天,除30/31以外的所有月份都正确地March天,这给了我30天的31

以前有没有人看过这也许是一个解释?

谢谢。

1 个答案:

答案 0 :(得分:2)

我认为是因为夏时制,请尝试 new DateTime.utc(),下面的代码将输出正确的值

for(int month = 1; month < 13; month++) {

  int daysInMonth = new DateTime.utc(2018, month+1,1).difference(new DateTime.utc(2018,month,1)).inDays;

  print(daysInMonth);
}

“在处理日期或历史事件时,最好使用UTC日期时间,因为它们不受夏时制更改的影响,也不受本地时区的影响。”