Вычислить дни, оставаясь ко дню рождения?

Я соглашаюсь с NilObject, но я хотел бы добавить к этому:

, если Вы копируете весь метод и только изменить маленькую часть кода, можно рассмотреть занятие им с инверсией управления

, Если Вы копируете и вставить код вокруг, Вы почти всегда делаете что-то неправильно. Шифруемый как принцип разработки Однажды и Только Однажды .

12
задан LarsTech 26 April 2012 в 18:30
поделиться

2 ответа

// birthday is a DateTime containing the birthday

DateTime today = DateTime.Today;
DateTime next = new DateTime(today.Year,birthday.Month,birthday.Day);

if (next < today)
    next = next.AddYears(1);

int numDays = (next - today).Days;

Этот тривиальный алгоритм не работает, если день рождения 29 февраля. Это альтернатива (которая по сути совпадает с ответом Себа Нильссона:

DateTime today = DateTime.Today;
DateTime next = birthday.AddYears(today.Year - birthday.Year);

if (next < today)
    next = next.AddYears(1);

int numDays = (next - today).Days;
25
ответ дан 2 December 2019 в 05:04
поделиться

Попробуйте этот метод

private int GetDaysBeforeBirthday(DateTime birthdate)
{
    DateTime nextBday = new DateTime(DateTime.Now.Year, birthdate.Month, birthdate.Day);
    if (DateTime.Today > nextBday)
        nextBday = nextBday.AddYears(1);
    return (nextBday - DateTime.Today).Days;
}

просто передайте дату рождения, и он вернет оставшиеся дни до вашего следующего дня рождения

-1
ответ дан 2 December 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: