Сделайте так, чтобы значение даты окончания отображалось ровно через 1 год после ввода пользователем даты начала и учета високосных лет. - PullRequest
3 голосов
/ 30 июня 2011

Я все еще изучаю C #, и у меня возникла проблема с моей программой расчета заработной платы для SAP.

У меня есть форма, в которой пользователь выбирает начальный период.Т.е. «01 января 2011» через средство выбора даты и времени (1), созданное с помощью Visual Basic 2010.

Я хочу, чтобы другой элемент выбора времени и даты (2) в форме автоматически отображал конечный период после одного года.Если начальный период = «01 января 2011 года», я хочу, чтобы конечным периодом было «31 декабря 2011 года».

Мой код:

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
     var endDate = default(DateTime);

     endDate = dateTimePicker1.Value.AddDays(365);

     dateTimePicker2.Value = endDate;
} 

Мои 2 проблемы.

  1. Выше не учитываются високосные годы.Как мне решить эту проблему?

  2. При использовании вышеуказанного кода при выборе 01 января 2011 года дата окончания отображается неправильно, 01 января 2012 года, однако при вводе 01 марта 2011 годадата окончания отображается правильно, 29 февраля 2012 г. Может ли это быть связано с первой проблемой?

Любая помощь приветствуется.

Ответы [ 3 ]

5 голосов
/ 30 июня 2011
dateTimePicker1.Value.AddYears(1).AddDays(-1);
1 голос
/ 30 июня 2011

Использовать DateTime.AddYears DateTime.AddYears (1);

0 голосов
/ 30 июня 2011

Лучше использовать

endDate = dateTimePicker1.Value.AddYears(1);

, чем методы AddDays, потому что в некоторых годах 366 дней

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...