Как правильно сравнить дату C#

108
14 июня 2019, 08:10

Ребята подскажите как правильно сравнить дату? у меня есть запрос в бд, там отбирает строки и возвращает результат, как коллекцию обьекта по шаблону:

cmd.ExecObjects(new
        {
            Name = string.Empty,
            Date = DateTime.MinValue,
        });

Дальше там идет построение таблицы

sb.AppendFormat("Имя:{0}, дата {1} </td><td></td></tr>", row.Name, Date.ToString("dd.MM.yyyy"));

в результате на екране у меня выдает дату 01.01.0001. поэтому нужна доп проверка. Как ее правильно сделать? Как правильно представить дату(сейчас ToString("dd.MM.yyyy")?

Answer 1

Вот как я реализовывал нахождение разницы во времени через DateTime

dataInfo- объект полученный из БД

В нем dataInfo.Time - время в формате "dd.MM.yyyy hh:MM:ss:mm"

 DateTime enteredDate = DateTime.Parse(dataInfo.Time);
                var x = DateTime.Now;
                var time = (enteredDate - x).Duration();

а уже из time конкретно что нужно: годы, месяца, дни, часы.....

Answer 2

Как правильно представить дату(сейчас ToString("dd.MM.yyyy")?

string text = dateTime.ToString("MM/dd/yyyy HH:mm:ss.fff",
                            CultureInfo.InvariantCulture);

или добавив одинарные кавычки побоказ слэшей:

string text = dateTime.ToString("MM'/'dd'/'yyyy HH':'mm':'ss.fff");
  • MM - Месяц с предшествующим нулем
  • M - просто месяц без нулей
  • dd - с ну нулем
  • d - без нулей
  • yyyy - 4-символьный год
  • yy - 2-хсимвольный год
  • HH - 24часовый формат часов с предшествующим нулем
  • H - 24часовый формат без предшествующим нуля
  • hh - 12часовый формат часов с предшествующим нулем
  • h - 12часовый формат часов без нуля
  • mm - минут с предшествующим нулем
  • m - без нуля
  • ss - секунды с предшествующим нулем
  • s - секунды без предшествующего нуля.

А на тему сравнения....

Т.к. обьект ДатыВремени хранит и дату и время, а нужно сравнивать только даты... То нужно вытягивать именно дату из DateTime :

DateTime dt1 = DateTime.Now;
DateTime dt2 = DateTime.Now.AddHours(3);
if( dt1.Date == dt2.Date)//смотри, я работаю только с датами!
{
    //some action
}
READ ALSO
Использование библиотеки DataAnnotations

Использование библиотеки DataAnnotations

Подскажите пожалуйста какой смысл от аннотации [DataType(DataTypePassword)]? Вот например если я использую во вью хелпер @Html

133
Перенос Верхнего меню в PHP

Перенос Верхнего меню в PHP

Надо вывести "Меню" <li> в код через PHPСмысл в том, чтобы не повторять одну и тоже строку <li>, а сократить 8 строк в 1 php вывод

130
Отправка документа на стену docs.save vk api

Отправка документа на стену docs.save vk api

При выполнении данного кода возникает ошибка в последней строке

163