Подтвердить что ты не робот

Почему 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

Update:

Спасибо, я перешел на

    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

4b9b3361

Ответ 1

Даты являются неизменяемыми объектами, т.е. они не могут быть изменены после создания. DateTime.AddHours возвращает новый экземпляр DateTime, который сдвинут назад на 4 часа, но "дата" не будет изменена.

Использование:

DateTime newDate = date.AddHours(-4);

Ответ 2

AddHours возвращает новый объект DateTime, который является результатом добавления часов к оригиналу. Оригинал остается неизменным.

Таким образом, вы хотите date = date.AddHours(-4); вместо просто date.AddHours(-4);

Ответ 3

Исходная дата установлена ​​на 4 часа назад, но вы не установили ее на новую дату. попробуйте это вместо:

date = date.AddHours(-4);

Ответ 4

AddHours просто возвращает новую добавленную дату, используйте это:

date = date.AddHours(-4);

Ответ 5

AddHours возвращает новый объект DateTime. сделайте следующее:

date = date.AddHours(-4);

Документация: ссылка

Ответ 6

DateTime не является неизменным. Это просто, что методы DateTime не меняют структуру, но вместо этого возвращают новую.

Если вы это сделаете:

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

Затем структура d1 будет перезаписана значениями d2.

Я не знаю, возможно ли иметь неизменяемую структуру.