Я хотел бы определить ближайший момент времени, заданный сейчас, и исходный момент времени. Это прекрасно работает следующим образом:получение ближайшей возможной даты с указанием даты и даты в високосный год
var originalPointInTime = new DateTime(2016, 3, 29);
var now = new DateTime(2017, 2, 3);
var closestDay1 = new DateTime
(
now.Year,
originalPointInTime.Month,
originalPointInTime.Day,
originalPointInTime.Hour,
originalPointInTime.Minute,
originalPointInTime.Second,
originalPointInTime.Millisecond
);
Однако, если я использую год точку скачка во время он не делает:
var leapYearPointInTime = new DateTime(2016, 2, 29);
var closestDay2 = new DateTime
(
now.Year,
leapYearPointInTime.Month,
leapYearPointInTime.Day,
leapYearPointInTime.Hour,
leapYearPointInTime.Minute,
leapYearPointInTime.Second,
leapYearPointInTime.Millisecond
);
Есть простой способ, чтобы заставить это работать на високосный год? Я знаю:
DateTime.IsLeapYear
и мог написать некоторый свернутый код, но, возможно, есть простой способ достичь вышеуказанного?
Было бы 28 февраля 2017 года в год, например прыжок для closestDay2. Проблема заключается в том, что 2017 год не является високосным годом - поэтому используется исключение из 29 причин. – cs0815
Ваш код будет работать, если вы используете AddDays (-1). Благодарю. По-прежнему кажется, что это сложно сделать в .net, не так ли? – cs0815
Исправлена ошибка. Поскольку DateTime является типом значения, вам нужно сохранить обновленное значение. Да, это выглядит немного беспорядочно ... – Benj