Сравните два DateTimes с игнорированием секунд и миллисекунд

avatar
kkami-sama
8 августа 2021 в 17:49
139
2
0

Я беру два объекта из базы данных. Одно — это имя файла с датой инициализации, а второе — объект DateTime, например 2021-08-08 17:32:07.880.

Во-первых, я преобразовал имя файла в дату и время с помощью кода, показанного здесь:

var fileDate = DateTime.ParseExact(filename, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture);

Я должен проверить, что разница между первым свиданием и вторым свиданием составляет 3 часа 15 минут или просто 3 часа.

Как удалить секунды и миллисекунды даты 2 и сравнить их?

Источник
Mat J
8 августа 2021 в 18:26
0

var isEither3Hours_Or_3hrs15mins= new[]{180d,195d}.Contains((firstDate - secondDate).TotalMinutes)

Meysam Pourmonfared Azimi
8 августа 2021 в 19:32
0

проверьте этот пост coderhelper.com/questions/1004698/…

Ответы (2)

avatar
Caius Jard
8 августа 2021 в 20:21
3

Я бы поступил так же, как рекомендует MatJ:

У вас есть время вашего файла и время вашей БД, которое может иметь секунды и миллисекунды. Если вы сделаете более позднюю минус более раннюю, вы получите промежуток времени, представляющий продолжительность времени между datetimes

dBDate - fileDate

Временные промежутки имеют свойство TotalMinutes, которое является десятичным числом. Промежуток времени в 5 минут 45 секунд будет иметь значение TotalMinutes 5,75

.

Итак, если мы приведем это к типу int, секунды будут обрезаны; простые!

var t = (int)((dBDate - fileDate).TotalMinutes);

Теперь вы можете сравнить свой t на равенство со 180 (3h) или 195 (3h15h

kkami-sama
8 августа 2021 в 21:39
0

Простите за это. Я не совсем понял: / мне просто нужно взять эту переменную «var t» в оператор if?

Caius Jard
8 августа 2021 в 23:20
0

Ага, if(t==180) //do whatever happens at 3h else if(t==195) //do whatever happens at 3h15

avatar
Shreekesh Murkar
8 августа 2021 в 18:04
0

Это очень легко сделать!

Попробуйте следующий код:

TimeSpan timeSpan = (firstDate - secondDate)
timeSpan.CompareTo(new TimeSpan(3, 15, 0)) // hrs, mins, seconds

Этот метод CompareTo вернет 1, если разница между двумя значениями времени больше 3 часов 15 минут, в противном случае он вернет -1

ПС: firstDate и secondDate находятся в DateTime

kkami-sama
8 августа 2021 в 18:05
0

Я собираюсь попробовать это ty!! Но я должен использовать любую математическую функцию, такую ​​​​как abs или что-то еще?

Shreekesh Murkar
8 августа 2021 в 18:25
0

@kkami-sama, если это работает для вас, не забудьте проголосовать и принять ответ

Steeeve
8 августа 2021 в 19:03
0

@kkami-sama Вычитание дат дает вам структуру TimeSpan. Таким образом, вы можете использовать метод Duration, который дает вам новый TimeSpan, значение которого является абсолютным значением текущего TimeSpan. Итак, что-то вроде (date1 - date2).Duration().TotalMinutes И обратите внимание на разницу между Minutes и TotalMinutes - вы получите последнее.