将DateTime添加到列表会丢失12个小时

时间:2017-11-01 15:05:30

标签: c# list datetime

我有一个约会时间:

var time = DateTime.Now;

我将时间格式化为我需要的布局。当我将时间添加到列表时,时间会发生变化。例如。 14:00至02:00

List<DateTimeQty> timeList= new List<DateTimeQty>();
timeList.Add(new DateTimeQty(Convert.ToDateTime(time.ToString("yyyy-MM-dd hh:mm:ss"))));

我尝试增加小时但结果保持不变。例如

time.AddHours(1); 

02:00正在进入,02:00正在03:00出来。我做错了什么?

3 个答案:

答案 0 :(得分:4)

time = time.AddHours(1); 

这就是你所需要的。

time.AddHours(1)只需再创建一个日期时间。它不会添加到time变量。

答案 1 :(得分:4)

我认为您需要使用24小时格式,将hh更改为HH

timeList.Add(new DateTimeQty(Convert.ToDateTime(time.ToString("yyyy-MM-dd HH:mm:ss"))));

答案 2 :(得分:0)

您的问题是自定义格式yyyy-MM-dd hh:mm:ss导致解析您的DateTime失败。我根本不建议使用自定义格式,相反,您应该查看标准格式"d", "D", "f", "F", "g", "G", "m", "o", "R", "s", "t", "T", "u", "U", "y"。如果你赶时间,那就选择&#34; s&#34;例如。

有关DateTime格式herehere的更多信息。

如前所述,您需要将结果值分配给初始值。

var time = DateTime.Now;
time = time.AddHours(1);

这种行为的原因是DateTime是一个不可变的结构,它是一种值类型。因此time.AddHours(1)分配DateTime的新实例,但不更改现有名为time的实例。

我建议您阅读this article以更好地区分值类型和引用类型。