为什么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的值。
我不知道是否有可能有一个不可变的结构。