Member 13302374 Ответов: 2

C# - вычислить количество дней до крайнего срока [улучшено]


Привет,

Мне дали дату и время встречи, и мне нужно вернуть, сколько дней она (встреча) будет в будущем. Ответ должен быть в полных днях; например, в 11 вечера Сегодня вечером, встреча в 9 утра завтра будет 1 день (а не 10 часов).

Я попытался задать этот вопрос (пожалуйста, смотрите код ниже). Однако под всем этим я получаю красную волнистую линию, в которой говорится: "не могу неявно преобразовать тип "double" в "int". Существует явное преобразование (вам не хватает актерского состава?)'.

Пожалуйста, имейте в виду, что я постоянно занимаюсь другими исследованиями, чтобы изучить C#, и ленивый-это не то, что я делаю, публикуя вопросы, которые я пытался.

Я ценю вашу помощь.

С уважением.

Что я уже пробовал:

public static int HowManyDaysFromToday(DateTime appointment)
{
  return appointment.TimeOfDay.Subtract(DateTime.Now.TimeOfDay).TotalDays;
}

2 Ответов

Рейтинг:
19

Andy Lanng

Ну я бы предложил убрать тайм аут и сравнить эти две даты таким образом:

public static int HowManyDaysFromToday(DateTime appointment)
{
  var today = DateTime.Today; //like DateTime.Now but with no time aspect
  var appDay = appointment.Date;
  return appDay.Subtract(today).TotalDays;
}


Если вы хотите, то вы можете вернуть временной интервал с фактическим временем тоже:
public static TimeSpan HowManyDaysFromToday(DateTime appointment)
{
  var today = DateTime.Today; //like DateTime.Now but with no time aspect
  var appDay = appointment.Date;
  return appDay.Subtract(today) + appointment.Subtract(appDay); // or whatever
}


Таким образом, у вас есть все данные в одном стандартном объекте:

public override string ToString(){
  var ts = HowManyDaysFromToday(_app);
  return string.Format("{0} days at {1}:{2}",(int)ts.TotalDays,ts.Hours,ts.Minutes);
}


Это не самый лучший способ сделать это, но это всего лишь идея.


Member 13302374

Еще раз благодарю вас. Ваше знание C# вдохновляет меня, и вы также объясняете вещи, которые помогают мне развить понимание, а не только синтаксис.

Andy Lanng

Очень высокая похвала. Я рад, что вы чувствуете себя более уверенным в своем понимании :)

Maciej Los

5ед!

Рейтинг:
1

Richard MacCutchan

Это в основном та же проблема, что и C# - вычислить количество часов до крайнего срока[^] за исключением того, что на этот раз вы смотрите на дни. Учитывая, что вам нужны полные или частичные дни, вам просто нужно разделить часы на 24 и добавить 1, Если есть остаток. Простая математика на самом деле.


Maciej Los

5ед!

Andy Lanng

В основном это произошло в чате по последнему вопросу (ваша ссылка): в основном, если даты пересекают полночь, то это целый день, так что 11 вечера - 9 утра - это 1 день, а 11 утра - 9 вечера-нет