Как сравнить две даты?

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
че-то у меня все тоже самое остается..
что искать: \d{2}(\d{2})-(\d+)-(\d+) (\d+):(\d+)
заменить на это: $3.$2.$1 $4:$5
баг последней или последних версий. Только что повторил. На 5.22 норм сработало

Хотя, сейчас повторил и сработало. Не понятно

Нашёл. Нужно выбирать "все"
 
Последнее редактирование:

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
баг последней или последних версий. Только что повторил. На 5.22 норм сработало
похоже что да.. проверил в стороннем генераторе, все отлично отработало, попробую перегрузить мейкер
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
похоже что да.. проверил в стороннем генераторе, все отлично отработало, попробую перегрузить мейкер
Нашёл. Нужно выбирать "все" совпадения.
В последней версии стоит по умолчанию "первое". А в 5.22, например, по умолчанию "все"
 
  • Спасибо
Реакции: artsmm

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Нашёл. Нужно выбирать "все" совпадения.
В последней версии стоит по умолчанию "первое". А в 5.22, например, по умолчанию "все"
семен-семеныч :D Спасибо))
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
В чем может быть проблема?

Форматы дат:
Текущая - 28.07.2019 09:58
time_end - 28.08.2019 8:58

Если текущая дата меньше time_end, то выдается сообщение:

Выполнение действия CSharp OwnCode: Сравниваем даты. [Строка: 14; Cтолбец: 0] false

Если больше, то: Выполнение действия CSharp OwnCode: Сравниваем даты. Строка не распознана как действительное значение DateTime.

Код:
// умно парсим дату из нашей переменной формата произвольного (29.08.03 9:00 , надеюсь "03" это "год 2003"),
//а то изначально программа ее понимает как набор символов (string) а не как дату.
DateTime date_start = DateTime.ParseExact(project.Variables["now_date"].Value, "dd.MM.yyyy hh:mm", null);
DateTime date_end = DateTime.ParseExact(project.Variables["time_end"].Value, "dd.MM.yyyy hh:mm", null);
// в лог выводим разницу в днях для понимания:
project.SendInfoToLog(Math.Floor((date_start - date_end).TotalDays).ToString(), false);

if(date_start > date_end){
return "true";
}else{
throw new Exception("false");
}

В чем может быть проблема?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
В чем может быть проблема?

Форматы дат:
Текущая - 28.07.2019 09:58
time_end - 28.08.2019 8:58

Если текущая дата меньше time_end, то выдается сообщение:

Выполнение действия CSharp OwnCode: Сравниваем даты. [Строка: 14; Cтолбец: 0] false

Если больше, то: Выполнение действия CSharp OwnCode: Сравниваем даты. Строка не распознана как действительное значение DateTime.

Код:
// умно парсим дату из нашей переменной формата произвольного (29.08.03 9:00 , надеюсь "03" это "год 2003"),
//а то изначально программа ее понимает как набор символов (string) а не как дату.
DateTime date_start = DateTime.ParseExact(project.Variables["now_date"].Value, "dd.MM.yyyy hh:mm", null);
DateTime date_end = DateTime.ParseExact(project.Variables["time_end"].Value, "dd.MM.yyyy hh:mm", null);
// в лог выводим разницу в днях для понимания:
project.SendInfoToLog(Math.Floor((date_start - date_end).TotalDays).ToString(), false);

if(date_start > date_end){
return "true";
}else{
throw new Exception("false");
}

В чем может быть проблема?
в этом коде нет 14й строки
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
выводи и даты в лог, которые в сниппет передаёшь. Бок в них
Изменил взятие текущей даты, но ошибка осталась:
Выполнение действия CSharp OwnCode: Сравниваем даты. Строка не распознана как действительное значение DateTime.

Главное не понятно - какая именно строка

Код:
return DateTime.Now.ToString();
- текущую так беру

Сравниваю кодом выше
 

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Вопрос снят, разобрался, все работает.
Как решил:

1)Выставил текущую дату так:
Код:
return DateTime.Now.ToString();
2) Сравнение так:
Код:
DateTime date_start = Convert.ToDateTime(project.Variables["now_date"].Value);
DateTime date_end = Convert.ToDateTime(project.Variables["time_end"].Value);

if(date_start > date_end){
    return "true";
}else{
    throw new Exception("false");
}
 

obyavkaby

Client
Регистрация
26.05.2017
Сообщения
188
Благодарностей
17
Баллы
18
У меня в проектах всё работает относительно {-TimeNow.UnixTime-}.

Простыми словами я беру {-TimeNow.UnixTime-} сохраняю в переменную - это время в секундах с 1 января 1970 года.

Потом обычным математическим действием на С# определяю прошло ли нужное время в секундах, а если нужно наглядно посмотреть сколько прошло то / 60 минуты / 60 часы / 24 дни.

А если нужно переводить даты в Unix и обратно.

Если конвертировать строку в число.

Здравствуйте.
Нужно конвертировать дату из UnixTime в формат DateTime

нашел пример указанный здесь переводить даты в Unix и обратно

Код:
var timeSpan = TimeSpan.FromSeconds(1566367003);
var localDateTime = new DateTime();
как результат положить в переменную ?
 

obyavkaby

Client
Регистрация
26.05.2017
Сообщения
188
Благодарностей
17
Баллы
18
Здравствуйте.
Нужно конвертировать дату из UnixTime в формат DateTime

нашел пример указанный здесь переводить даты в Unix и обратно

Код:
var timeSpan = TimeSpan.FromSeconds(1566367003);
var localDateTime = new DateTime();
как результат положить в переменную ?


Подсказали такое решение

Код:
int stamptime = Int32.Parse(project.Variables["start_torgov"].Value);
DateTime pDate = (new DateTime(1970, 1, 1, 0, 0, 0, 0)).AddSeconds(stamptime);
return pDate;
 
  • Спасибо
Реакции: Alex62

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Сравниваю какая дата меньше. Подскажите пожалуйста, как правильно написать чтобы ошибки не было?

Ошибка:


Код c#:
Код:
DateTime date_start = Convert.ToDateTime("{-Variable.m_time_start-}");
DateTime date_site = Convert.ToDateTime("{-Variable.m_time_site-}");


if(date_start < date_site){
    return "true";
}else{
    throw new Exception("false");
}
Доброго времени суток, подскажите пользуюсь этим кодом, в PM все сравнивается корректно, а вот ZP выдает ошибку, не могу понять почему. Версия 5.34.0.0
C#:
DateTime date_start = Convert.ToDateTime("{-Variable.data_poslednego_sbora-}");
DateTime date_site = Convert.ToDateTime("{-Variable.data_sozdeniya-}");
if(date_start <= date_site){
    return "true";
}else{
    throw new Exception("false");
}
Даты приведены к виду 01.10.2019. Ошибку выдает
Выполнение действия CSharp OwnCode: Сравнение даты публикации и даты сбора. Строка не распознана как действительное значение DateTime.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Доброго времени суток, подскажите пользуюсь этим кодом, в PM все сравнивается корректно, а вот ZP выдает ошибку, не могу понять почему. Версия 5.34.0.0
C#:
DateTime date_start = Convert.ToDateTime("{-Variable.data_poslednego_sbora-}");
DateTime date_site = Convert.ToDateTime("{-Variable.data_sozdeniya-}");
if(date_start <= date_site){
    return "true";
}else{
    throw new Exception("false");
}
Даты приведены к виду 01.10.2019. Ошибку выдает
Выполнение действия CSharp OwnCode: Сравнение даты публикации и даты сбора. Строка не распознана как действительное значение DateTime.
Некорректно используете переменные проекта в коде CSharp.

Попробуйте вставить переменные в код через контекстное меню (правой кнопкой мыши), - сразу увидите разницу.

Должно быть типа: project.Variables["data_poslednego_sbora"].Value
 
  • Спасибо
Реакции: Alex62

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Некорректно используете переменные проекта в коде CSharp.

Попробуйте вставить переменные в код через контекстное меню (правой кнопкой мыши), - сразу увидите разницу.

Должно быть типа: project.Variables["data_poslednego_sbora"].Value
DateTime date_start = Convert.ToDateTime(project.Variables["data_naw"].Value);
так должно быть, без кавычек? или с кавычками?
DateTime date_start = Convert.ToDateTime("project.Variables["data_naw"].Value");
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
DateTime date_start = Convert.ToDateTime(project.Variables["data_naw"].Value);
так должно быть, без кавычек? или с кавычками?
DateTime date_start = Convert.ToDateTime("project.Variables["data_naw"].Value");
Если вы не изменяли названия своих переменных, попробуйте такой код:
C#:
DateTime date_start = Convert.ToDateTime(project.Variables["data_poslednego_sbora"].Value);
DateTime date_site = Convert.ToDateTime(project.Variables["data_sozdeniya"].Value);
if(date_start <= date_site){
    return "true";
}else{
    throw new Exception("false");
}
 
  • Спасибо
Реакции: Alex62

Alex62

Client
Регистрация
16.10.2015
Сообщения
231
Благодарностей
31
Баллы
28
Если вы не изменяли названия своих переменных, попробуйте такой код:
C#:
DateTime date_start = Convert.ToDateTime(project.Variables["data_poslednego_sbora"].Value);
DateTime date_site = Convert.ToDateTime(project.Variables["data_sozdeniya"].Value);
if(date_start <= date_site){
    return "true";
}else{
    throw new Exception("false");
}
Спасибо, вроде бы получилось
 

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
А как сравнить такие 06.02 >= 31.03 даты?
06 - дата, 02 - месяц.
В данном случай Если первая дата 06.02 Будет больше чем вторая перейти к другому заданию, если меньше то делать эту..
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
А как сравнить такие 06.02 >= 31.03 даты?
06 - дата, 02 - месяц.
В данном случай Если первая дата 06.02 Будет больше чем вторая перейти к другому заданию, если меньше то делать эту..
год надо дописать и спарсить в формат даты кодом выше
 
  • Спасибо
Реакции: art22

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
год надо дописать и спарсить в формат даты кодом выше
Получилось. А как в место второй переменной в коде указать саму переменную в место этого дату (project.Variables["data_sozdeniya"].Value); ? Указываю дату project.Variables["31.03.2019"].Value) не работает
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Получилось. А как в место второй переменной в коде указать саму переменную в место этого дату (project.Variables["data_sozdeniya"].Value); ? Указываю дату project.Variables["31.03.2019"].Value) не работает
DateTime date_site = Convert.ToDateTime("31.03.2019");
 
  • Спасибо
Реакции: art22

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)