考虑以下代码:
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 之间。
这是一个错误还是我错过了什么?
问候佩曼
根据 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)
        我猜是 10 月 26 日(以及 25/10 和 30/10 之间的其他日期是由于夏令时结束所致。1 小时(23:00:00.000)的差异表明这是原因。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           6875 次  |  
        
|   最近记录:  |