日期时间和持续时间相加

Pey*_*ard 5 dart

考虑以下代码:

void main() {

  var duration = new Duration(days : 1);
  print ("duration " + duration.toString());

  var d1 = new DateTime(2014, 10, 26);
  print ("d1 " + d1.toString());

  d1 = d1.add(duration);
  print ("d1 + duration " + d1.toString());


  var d2 = new DateTime(2014, 10, 20);
  print ("d2 " + d2.toString());

  d2 = d2.add(duration);
  print ("d2 + duration " + d2.toString());

}
Run Code Online (Sandbox Code Playgroud)

和输出:

duration 24:00:00.000000
d1 2014-10-26 00:00:00.000
d1 + duration 2014-10-26 23:00:00.000
d2 2014-10-20 00:00:00.000
d2 + duration 2014-10-21 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

为什么 10 月 20 日和 26 日表现不同。我已经为一年中的每一天检查了相同的代码,并且每年都有一天的日期 + 1 天等于相同的日期。每年的日期似乎都在 10 月 25/10 和 30/10 之间。

这是一个错误还是我错过了什么?

问候佩曼

Але*_*бич 7

根据 Günter Zöchbauer 的回答 - 现在是夏令时。

要正确添加日期,您可以使用以下内容:

var d1 = new DateTime(2014, 10, 26);
var d1 = new DateTime(d1.year, d1.month, d1.day + 1);
Run Code Online (Sandbox Code Playgroud)


Gün*_*uer 4

我猜是 10 月 26 日(以及 25/10 和 30/10 之间的其他日期是由于夏令时结束所致。1 小时(23:00:00.000)的差异表明这是原因。

  • 你当然是对的。我错过了 DateTime 当地时间的部分。现在是夏令时。10 月 20 日如我所料(= 第二天) var d1 = new DateTime.utc(2014, 10, 26); 纠正我的问题。 (2认同)