当我这样做时,我有相同的结果1338161400
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = DateTime.Parse(@"28/05/12 01:30");
TimeSpan diff = date.ToUniversalTime() - origin;
Console.WriteLine( (Math.Floor(diff.TotalSeconds)).ToString());
以及我使用date.AddHours(-4):
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = DateTime.Parse(@"28/05/12 01:30");
date.AddHours(-4);
TimeSpan diff = date.ToUniversalTime() - origin;
Console.WriteLine( (Math.Floor(diff.TotalSeconds)).ToString());
我尝试像http://www.mbari.org/staff/rich/utccalc.htm
那样得到1338168600更新
谢谢我改为
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime date = DateTime.Parse(@"28/05/2012 01:30");
date = date.AddHours(-4);
date = date.ToUniversalTime();
TimeSpan diff = date - origin;
Console.WriteLine((Math.Floor(diff.TotalSeconds)).ToString());
但我得到1338147000仍然不是1338168600
答案 0 :(得分:60)
日期是不可变对象,即在创建后无法修改它们。 DateTime.AddHours返回一个新的DateTime实例,该实例向后移动4小时,但“date”不会被修改。
使用:
DateTime newDate = date.AddHours(-4);
答案 1 :(得分:8)
AddHours
会返回新 DateTime
对象,这是将小时数添加到原始对象的结果。原件保持不变。
因此,您需要date = date.AddHours(-4);
而非date.AddHours(-4);
答案 2 :(得分:5)
原始日期设置为向后4小时,但您没有将其设置为新日期。试试这个:
date = date.AddHours(-4);
答案 3 :(得分:4)
AddHours
只返回新的递增日期,请使用:
date = date.AddHours(-4);
答案 4 :(得分:4)
DateTime不是不可变的。只是DateTime方法不会改变结构,而是返回一个新结构。
如果你这样做:
DateTime d1 = DateTime.Now;
DateTime d2 = DateTime.Now;
d1 = d2;
然后,结构d1将被d2的值覆盖。
我不知道是否有可能拥有不可变结构。
答案 5 :(得分:2)
答案 6 :(得分:1)
尝试这是否有效:
System.DateTime today = System.DateTime.Now;
System.TimeSpan duration = new System.TimeSpan(0, 11, 0, 0);
System.DateTime answer = today.Add(duration);
System.Console.WriteLine("{0:dddd}", answer);
这似乎也改变了日期中的日期也增加了几小时。