为什么DateTime.AddHours似乎不起作用?

use*_*291 17 .net c# datetime

我做的时候有同样的结果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());
Run Code Online (Sandbox Code Playgroud)

以及当我使用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());
Run Code Online (Sandbox Code Playgroud)

我试着像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());  
Run Code Online (Sandbox Code Playgroud)

但我得到1338147000仍然不是1338168600

Slu*_*art 60

日期是不可变对象,即它们在创建后无法修改.DateTime.AddHours返回一个新的DateTime实例,该实例向后移动4小时,但不会修改"date".

使用:

DateTime newDate = date.AddHours(-4);
Run Code Online (Sandbox Code Playgroud)


Raw*_*ing 8

AddHours返回一个 DateTime对象,它是将小时数添加到原始对象上的结果.原件保持不变.

因此,你想要date = date.AddHours(-4);而不是只是date.AddHours(-4);


Joh*_*Woo 5

原始日期设置为向后4小时,但您没有将其设置为新日期.试试这个:

date = date.AddHours(-4);
Run Code Online (Sandbox Code Playgroud)