У меня очень простой объект DateTime, который установлен на дату 01-01-0001. Я получаю значение, добавляемое в это DateTime, через несколько дней. Я вижу неожиданное смещение в моих результатах, хотя и двух дней. Давайте представим, что я распечатать результаты AddDays() вызов, например, так:C# DateTime AddDays Неожиданное смещение
DateTime myDateTime = DateTime.Parse("01-01-0001 00:00:00");
Console.WriteLine(myDateTime.AddDays(735768.0));
со значением видели выше (735768,0) Я ожидаю, что выход «6/18/2015 12:00:00 AM» , Однако вместо этого я получаю «6/20/2015 12:00:00 AM». Когда я иду на следующий веб-сайт и вычислить длительность в днях между 01-01-0001 -> 06/18/2015 Я получаю значение 735,768 дней, как и ожидалось:
http://www.timeanddate.com/date/durationresult.html?m1=01&d1=01&y1=0001&m2=06&d2=18&y2=2015
Могу ли я делать что-то не так, или что-то происходит под капотом, о котором я не знаю?
В случае, если вам интересно, 735,768 представляет собой первое значение данных, с которыми я работаю. Ожидается, что данные начнутся с 18.06.2012 00:00:00.
Редактировать: Я должен отметить, что я просто представил этот конкретный веб-сайт в качестве примера конфликтующего источника. Другие сайты, в том числе правительственное агентство по погоде, я получаю данные от всех, дайте мне 06-18-2015. Это не означает, что C# неверен. Мне более любопытно, откуда взялось это смещение, и почему.
Вы рассмотренный високосными.? –
Почему бы не просто сохранить дату? Может быть, високосные годы? Попробуйте это и посмотрите, что вы получаете: 'TimeSpan diff = new DateTime (2015, 6, 15) - myDateTime;' и см. Значение 'diff.TotalDays'. –
Вы ожидаете значения этой даты? Потому что другой сайт сказал так, или потому, что вы его рассчитали? Что делать, если это неправильный сайт, а не функция «AddDays»? Вы подтвердили через несколько источников? – Kritner