Сравнение дней и месяцев

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Никак красиво не получается сравнить даты, но без года.
Например, сейчас 21.02 и если вторая дата, скажем, 15.08, то это одна ветка IF, будущее, а если 29.01, то есть в прошлом, то это вторая.
Что-то не хочется цифры месяцев сравнивать, может есть встроенные методы в Date для такой задачи?

UPDATE
Что-то я ступил
PHP:
DateTime d1 = new DateTime(DateTime.Now.Year, 1, 1);
DateTime d2 = DateTime.Now;
return (d1-d2).TotalDays;
Если отрицательная дата, то прошлое, если положительная, то будущее.
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
думаю нет такого, это очень сложно, тем более для новичков взять дату и сравнить )
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 084
Благодарностей
339
Баллы
83
сравнивай вместе с годом а потом выпиливай его
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Похоже что никак.
C# не распознает дату будущего года как корректную.
PHP:
DateTime d3 = DateTime.Parse("Sat, Feb 1"); //это ошибка
Придется арифметически...
 

inotoxic

Client
Регистрация
20.04.2015
Сообщения
354
Благодарностей
162
Баллы
43
Код:
DateTime dateTime1 = DateTime.Parse("21.02");
DateTime dateTime2 = DateTime.Parse("15.08");
if (dateTime1.Date > dateTime2.Date)
{
   project.SendInfoToLog("Время в прошлом", "",true);
}
else
{
    project.SendInfoToLog("Время в будущем", "",true);
}
 
  • Спасибо
Реакции: Astraport

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Ну что-то похожее и у меня родилось)
PHP:
DateTime d1 = new DateTime(DateTime.Now.Year, 1, 1);
DateTime d3 = DateTime.Parse("Apr 27");//это в этом году
//DateTime d3 = DateTime.Parse("Feb 1");//это в будущем

DateTime d2 = DateTime.Now;
int now_days = Convert.ToInt32((d2-d1).TotalDays);
int other_days = Convert.ToInt32((d3-d1).TotalDays);
if (other_days > now_days) {
    return DateTime.Now.Year;
} else {
    return DateTime.Now.Year + 1;
}
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
прикольно, они что в переменных ?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
как получили даты ?
на куй такие топики создаёте ?
 

specialist

Client
Регистрация
28.12.2018
Сообщения
732
Благодарностей
343
Баллы
63

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 943
Благодарностей
4 336
Баллы
113
Все даты за один год?
Я неправильно сформулировал стартовый вопрос. Вернее хотел упростить для понимания других.
Задача довольно частая. При парсинге выдается дата, неважно в каком формате, но там нет года. Например список мероприятий в ФБ. Если бы сейчас был ноябрь 2019, то там могли так отображаться даты предстоящих событий: декабрь 18, декабрь 29, январь 8, февраль 12.
И нужно понять по дате к какому именно году они соответствуют - первые две 2019, две следующих - 2020. Именно эта задача решается кодом выше, что я привел.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)