Member 12314309 Ответов: 1

Как, если большее условие применяется между двумя временами.


я хочу, чтобы если 9:00 > 8:00, то в результате будет 1 в третьей колонке

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

DateTime dt1 = Convert.ToDateTime(txtTime.Text.Trim()).Date;
           DateTime dt2 = Convert.ToDateTime(txtLTime.Text.Trim()).Date;

           if (int.Parse(txtLTime.Text) > int.Parse(txtTime.Text))
               {
                   txtLate.Text = "1";
               }

1 Ответов

Рейтинг:
9

OriginalGriff

Пожалуйста, взгляните на свой код.
Во-первых, вы преобразуете вводимые пользователем значения в DateTime:

DateTime dt1 = Convert.ToDateTime(txtTime.Text.Trim()).Date;
DateTime dt2 = Convert.ToDateTime(txtLTime.Text.Trim()).Date;
(Хотя гораздо лучше использовать DateTime.TryParse вместо Convert, поскольку он позволяет вам сообщить пользователю, что возникла проблема, а не сбой вашего приложения).
Затем вы игнорируете их и пытаетесь преобразовать одни и те же пользовательские входные данные в целое число:
if (int.Parse(txtLTime.Text) > int.Parse(txtTime.Text))
Одно из этих двух преобразований завершится неудачей: если данные представляют собой дату, то целочисленное преобразование завершится неудачей; если пользователь вводит целое число, то преобразования даты и времени завершатся неудачей. В любом случае, ваше приложение рухнет.

Используйте TryParse и сравните результаты:
DateTime dt1;
if (!DateTime.TryParse(txtTime.Text.Trim(), out dt1))
   {
   ... report problem to user ...
   return;
   }
dt1 = dt1.Date;
DateTime dt2;
if (!DateTime.TryParse(txtLTime.Text.Trim(), out dt2))
   {
   ... report problem to user ...
   return;
   }
dt2 = dt2.Date;
if (dt2 > dt1)
   {
   ...


Member 12314309

я сделал это, но не решился

OriginalGriff

Это нам ни о чем не говорит - Мы не можем видеть ваш экран, поэтому мы понятия не имеем, что вы на самом деле набрали, или что произошло, когда вы его запустили.
Итак, покажите нам фрагмент кода, покажите нам, что отладчик показал в текстовых полях, и скажите нам, что он сделал, чего вы не ожидали или не сделали, что вы сделали!

Member 12314309

у меня есть отладка никакой ошибки не приходит код работает нормально, но результат не приходит .я сделал этот код, как вы сказали

Датавремя ст1;
если (!DateTime.Метод tryparse(txtTime.Текст.Отделка(), вне ст1))
{

вернуть;
}
ст1 = ст1.Дата;
Датавремя ст2;
если (!DateTime.Метод tryparse(txtLTime.Текст.Отделка(), из ст2))
{

вернуть;
}
ст2 = ст2.Дата;
если (dt1 > dt2)
{
txtLate.Text="1";
}

OriginalGriff

Так что же случилось с "... сообщить о проблеме пользователю ..." бит? Вы этого не делаете, вы просто возвращаетесь - так что если какое-либо из текстовых полей не может быть проанализировано как допустимая Дата-Время, то ваш код ничего не делает, и вы не знаете об этом или почему.

И это именно то, что вы видите ...

Member 12314309

я решил свою проблему с помощью этого кода
DateTime dt1 = конвертировать.Объект todatetime(txtTime.Текст.Отделка());
DateTime dt2 = конвертировать.Объект todatetime(txtLTime.Текст.Отделка());

если (dt1 > dt2)
{
txtLate.Текст = "1";
}

OriginalGriff

Итак, вы задаете вопрос, мы объясняем, что вам нужно сделать и почему. И вы игнорируете его в пользу кода, который приведет к сбою вашего приложения, когда пользователь совершит ошибку.

Повеселиться.