为什么DateTime.AddHours似乎不工作?

我有同样的结果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()); 

我试图得到1338168600像http://www.mbari.org/staff/rich/utccalc.htm

更新:

谢谢,我改变了

  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

date是不可变的对象,即它们在创build后不能被修改。 DateTime.AddHours返回一个新的DateTime实例,向后移动4个小时,但“date”不会被修改。

使用:

 DateTime newDate = date.AddHours(-4); 

AddHours将返回一个新的 DateTime对象,这是将小时添加到原始对象的结果。 原文保持不变。

所以你想要date = date.AddHours(-4); 而不是只是date.AddHours(-4);

原始date设置为向后4小时,但您没有将其设置为新的date。 试试这个:

 date = date.AddHours(-4); 

AddHours只是返回新的递增date,使用这个:

 date = date.AddHours(-4); 

AddHours返回新的DateTime对象。 做这个:

 date = date.AddHours(-4); 

文档: 链接

DateTime不是不可变的。 这只是DateTime方法不会更改结构,而是返回一个新的。

如果你这样做:

 DateTime d1 = DateTime.Now; DateTime d2 = DateTime.Now; d1 = d2; 

然后,结构d1将被覆盖d2的值。

我不知道是否有可能有一个不可变的结构。