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

Astraport

Client
Joined
May 1, 2015
Messages
5,079
Reaction score
4,591
Points
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;
Если отрицательная дата, то прошлое, если положительная, то будущее.
 
Last edited:

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
думаю нет такого, это очень сложно, тем более для новичков взять дату и сравнить )
 

Шива

Client
Joined
Feb 5, 2018
Messages
1,095
Reaction score
341
Points
83
сравнивай вместе с годом а потом выпиливай его
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
сравнивай вместе с годом а потом выпиливай его
а для чего брать год ?
человек просто дату сравнивает
можно взять просто дату
время и часы
и сравнить
 

Astraport

Client
Joined
May 1, 2015
Messages
5,079
Reaction score
4,591
Points
113
Похоже что никак.
C# не распознает дату будущего года как корректную.
PHP:
DateTime d3 = DateTime.Parse("Sat, Feb 1"); //это ошибка
Придется арифметически...
 

inotoxic

Client
Joined
Apr 20, 2015
Messages
354
Reaction score
164
Points
43
Code:
DateTime dateTime1 = DateTime.Parse("21.02");
DateTime dateTime2 = DateTime.Parse("15.08");
if (dateTime1.Date > dateTime2.Date)
{
   project.SendInfoToLog("Время в прошлом", "",true);
}
else
{
    project.SendInfoToLog("Время в будущем", "",true);
}
 
  • Thank you
Reactions: Astraport

Astraport

Client
Joined
May 1, 2015
Messages
5,079
Reaction score
4,591
Points
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
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
прикольно, они что в переменных ?
 

ssXXXss

Client
Joined
Dec 23, 2014
Messages
7,374
Reaction score
2,043
Points
113
как получили даты ?
на куй такие топики создаёте ?
 

specialist

Client
Joined
Dec 28, 2018
Messages
734
Reaction score
343
Points
63
сейчас 21.02 и если вторая дата, скажем, 15.08, то это одна ветка IF, будущее, а если 29.01, то есть в прошлом
Все даты за один год?
 

Astraport

Client
Joined
May 1, 2015
Messages
5,079
Reaction score
4,591
Points
113
Все даты за один год?
Я неправильно сформулировал стартовый вопрос. Вернее хотел упростить для понимания других.
Задача довольно частая. При парсинге выдается дата, неважно в каком формате, но там нет года. Например список мероприятий в ФБ. Если бы сейчас был ноябрь 2019, то там могли так отображаться даты предстоящих событий: декабрь 18, декабрь 29, январь 8, февраль 12.
И нужно понять по дате к какому именно году они соответствуют - первые две 2019, две следующих - 2020. Именно эта задача решается кодом выше, что я привел.
 

Users Who Are Viewing This Thread (Total: 1, Members: 0, Guests: 1)