chinu1d Ответов: 3

Могу ли я проверить, содержит ли строка дату? Как и любое свидание


Моя таблица в базе данных содержит даты.
я хочу удалить даты из записи, если они относятся к периоду до сегодняшнего дня, то есть вчера или позавчера и так далее...

я знаю, что могу найти дату в строке, разделив слово.
теперь, как я могу удалить эту дату(дату, которую я нашел в строке путем расщепления), если она была до сегодняшнего дня??



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

 while (READ.Read())
                {
                string date = READ.GetString(h);
                DateTime dt;
                string[] words = date.Split(' ');
                bool found = false;
                foreach (string word in words)
                {
                    if (DateTime.TryParse(word,out dt))
                    {
                        l = word;
                        found = true;
                        break;
                    }
                    
                if(found)
                {
                        result = DateTime.Compare(l, DateTime.Today);//error cannot compare string with datetime..


                    }
}

BillWoodruff

Почему бы не использовать специальный элемент управления DateTimePicker и не предотвращать ошибки, не позволяя им происходить: например, в JQuery:

https://www.youtube.com/watch?v=DORmHaYU27c

3 Ответов

Рейтинг:
2

Ravi Bhavnani

Вы должны будете использовать регулярное выражение (регулярные выражения), чтобы определить это. Смотрите результаты этот[^] Поиск в Google, чтобы начать работу.

Также видеть этот[^] Ответ CP для быстрого решения.

/ Рави


Рейтинг:
2

OriginalGriff

Не легко и даже не надежно.
Проблема в том, что если вы не знаете, где находится дата, или даже ho0w long it it, то вы, вероятно, также не знаете, в каком формате она находится - и это вызывает большие проблемы.
Пример, который вы приводите, легко заметить: разделите строку на пробел и проверьте каждое "слово", чтобы увидеть, разбирается ли оно как значение даты:

DateTime dt;
string[] words = input.Split(' ');
bool found = false;
foreach (string word in words)
   {
   if (DateTime.tryParse(word, out dt))
      {
      found = true;
      break;
   }
Но... если дата является свободной формой, то что мешает пользователю ввести "Здравствуйте, сегодняшняя дата-16 июля 2017 года!"? И это трудно найти в качестве даты, даже при сложной проверке.
На вашем месте я бы перестроил механизм ввода, чтобы даты приходили от сборщиков, а не разбирали текст в свободной форме.


Рейтинг:
0

Atlapure Ambrish

Если вы можете найти часть даты из строки И знаете формат даты, хранящейся в таблице базы данных, то я думаю, что вы можете просто использовать метод parsedate для преобразования строки в дату, а затем сравнить ее с текущей датой, используя приведенный ниже код.

if (dateFoundInDB.Дата ==Дата И Время.Сейчас.Дата)

если это условие истинно, используйте string. remove (dateFoundInDB), чтобы удалить дату из строки.