Member 14786879 Ответов: 3

Как сравнить дату из txt-файла и дату windows?


Привет,
У меня есть такой txt файл:
21/05/2020 17:05:00 ; инфо ; инфо ; инфо
Я знаю, как получить эту часть строки "21/05/2020 17:05:00" и поместить ее в переменную.
Теперь у меня есть проблема, что я не знаю, как сравнить эту дату и час, которые находятся в моем txt-файле, с датой и часом windows.. и если это не mach, мне нужно получить сообщение.
Может ли кто-нибудь сказать, каким должен быть код?

Спасибо.

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

Вот что я сделал, чтобы получить эту часть строки "21/05/2020 17:05:00"

string[] liness = файл.ReadAllLines(ofd.FileName);
если (чувство.Длина > 0)
{
строка строчка = чувство[чувство.Длина - 1];
string[] columns = последняя строка.Расщеплять(';');
если (столбцы.Длина > 0)
{
строка lastColumn = columns[столбцы.Длина - 5];

3 Ответов

Рейтинг:
26

phil.o

Сначала вы должны получить правильное значение DateTime из строки из файла:

// Top of file
using System.Globalization;

string dateString = /* get your date string here */;
DateTime dateValue = DateTime.ParseExact(dateString, "dd/MM/yyyy HH:mm:ss", CultureInfo.CurrentCulture);

Затем вы можете сравнить его с текущей датой и временем. Однако это становится немного сложнее, так как вы можете захотеть сравнить только часть значений (например, не принимать во внимание миллисекунды). Реализация зависит от вашей спецификации.


Member 14786879

Когда я попробую ваше решение, дайте мне эту ошибку: "невозможно преобразовать 'string' в 'System.Объекта iformatprovider'. И знаете почему?

phil.o

- Виноват, - поправил я свой ответ.

Member 14786879

Я попробовал еще раз, как:
string[] liness = файл.ReadAllLines(ofd.FileName);
если (чувство.Длина > 0)
{
строка строчка = чувство[чувство.Длина - 1];
string[] columns = последняя строка.Расщеплять(';');
если (столбцы.Длина > 0)
{
строка date = столбцы[0];

строку дату = дата;
Датавремя датазнач = дата и время.Метод parseexact(дату, "ДД/ММ/гггг чч:мм:СС", свойство CultureInfo.Свойства currentculture);

Но он говорит, что в последней строке есть такая ошибка: "строка не распознается как допустимое значение DateTime."

phil.o

Не зная, какое точное значение есть в строке, трудно сказать решение. Пришло время начать сеанс отладки и исследовать это значение, которое не может быть проанализировано. Вы знаете, как проводить сеанс отладки?

Member 14786879

Под точным значением вы подразумеваете то, что есть в переменной "дата"? Потому что, если вы имеете в виду, что в txt файл, он будет читать эту строку "21/05/2020 17:05:00 ; другие информация ; прочая информация ; другая информация," и я собираюсь читать только первые "столбца", который содержит только этот "21/05/2020 17:05:00".
Нет, я не знаю, как провести сеанс отладки, я ищу на других форумах в google, у которых есть моя такая же проблема, но на данный момент я не нашел ответа, поэтому я зарегистрировался здесь и попросил помощи

phil.o

То, что находится в файле, - это одно; но это то, что точно находится в переменной даты, которая имеет значение.
Учебник: научитесь отлаживать код C# с помощью Visual Studio
Поставьте точку останова на линии string date = columns[0];, и запустите сеанс отладки (F5). Когда программа дойдет до точки останова, ее выполнение приостановится, и вы сможете выполнить ее построчно (F11) и следить за значениями, содержащимися в переменных.

Member 14786879

Хорошо, программа прочитала в txt-файле это:
"03/04/2019 11:22:09 --- \т" и он поставил ее на переменную "дата".
Мой txt файл, как бревно, так что есть много строк, как "21/05/2020 17:05:00 ; другие информация ; прочая информация ; прочая информация"
В этом коде мне просто нужно прочитать последнюю строку.

phil.o

Вы должны избавиться от --- \t на конце веревки. Именно это мешает правильному анализу даты.

Member 14786879

строка строчка = чувство[чувство.Длина - 1];
string[] columns = последняя строка.Расщеплять(';');
если (столбцы.Длина > 0)
{
строка date = столбцы[0];

строку дату = дата;
дату = дату.Удалить(19);

Датавремя датазнач = дата и время.Метод parseexact(дату, "ДД/ММ/гггг чч:мм:СС", свойство CultureInfo.Свойства currentculture);
если (датазнач.Дата == Дата И Время.Сейчас.Дата)
{
Ящик для сообщений.Показать("ОК");
}
еще
{
Ящик для сообщений.Шоу("плохо");
}

Хорошо, я нашел, как избавиться от --- \t. Теперь я пытаюсь сравнить то, что у меня есть в переменной dateString с датой и часом windows, но пока я это делаю, просто сравните дату и час..
Как я должен это исправить?

Рейтинг:
2

Richard MacCutchan

string lastColumn = columns[columns.Length - 5];

С какой стати ты это делаешь? Ваша дата и время-это первая колонка, а не последняя. Вы получаете доступ к нему с помощью
string date = columns[0];


Member 14786879

Вы правы, мне очень жаль, но я новичок в этом мире, как вы можете видеть. Я пытаюсь сделать эту программу, как могу, но, похоже, она не работает.
Я старался, как вы говорите, и это хорошо работает, теперь я должен лучше понять, как идти дальше

Richard MacCutchan

Ну, мы все должны были с чего-то начать и учиться с нуля. Но для начала вам лучше раздобыть несколько хороших учебных материалов. Попытка учиться на таком форуме займет гораздо больше времени. Есть очень хорошая бесплатная книга, которую вы можете скачать у великого Чарльза Петцольда. Идти к .NET книга ноль Чарльза Петцольда[^ и взгляните на него.

Рейтинг:
0

Richard MacCutchan

Это тот же самый вопрос, который вы опубликовали вчера на сайте https://www.codeproject.com/Questions/5268648/How-do-I-read-last-column-of-a-text-file-and-compa[^]. И у вас уже есть некоторые предложения.


Member 14786879

Да, я знаю, но теперь я не знаю, как решить эту часть проблемы

Richard MacCutchan

А почему бы и нет? OriginalGriff уже рассказал вам, как это сделать. Если у вас возникли проблемы с его предложением, то попросите его разъяснить, а не публиковать тот же вопрос снова.