考虑以下代码:
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 次 |
| 最近记录: |