我有一个约会时间:
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出来。我做错了什么?
答案 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;例如。
如前所述,您需要将结果值分配给初始值。
var time = DateTime.Now;
time = time.AddHours(1);
这种行为的原因是DateTime是一个不可变的结构,它是一种值类型。因此time.AddHours(1)
分配DateTime的新实例,但不更改现有名为time
的实例。
我建议您阅读this article以更好地区分值类型和引用类型。