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

Rudan

Client
Регистрация
21.10.2014
Сообщения
29
Благодарностей
3
Баллы
3
Как сравнить две переменные, содержащие даты формата: Mon, 29 Dec 2014 21:39:45 +0000 ?
 

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 771
Благодарностей
1 184
Баллы
113

ZennoScript

Moderator
Регистрация
04.03.2011
Сообщения
4 450
Благодарностей
1 880
Баллы
113

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
797
Баллы
113
Сравнение — это логическая операция, которая возвращает «меньше», «равно» или «больше».
В Зенно для дат это целая история, я использовал свой код на C#
 
  • Спасибо
Реакции: lokiys

7make

Client
Регистрация
25.06.2011
Сообщения
1 547
Благодарностей
1 310
Баллы
113

Обращаем Ваше внимание на то, что данный пользователь заблокирован.
Не рекомендуем проводить с 7make какие-либо сделки.

Нужно просто привести к типу Дата
JS
JavaScript:
var date1 = new Date("Mon, 29 Dec 2014 21:39:45 +0000");
var date2 = new Date("Mon, 30 Dec 2014 21:39:45 +0000");

if(date1 < date2){
    //console.log("true");
}else{
    //console.log("false");
}
 

Rudan

Client
Регистрация
21.10.2014
Сообщения
29
Благодарностей
3
Баллы
3
7make, спасибо. Не думал, что в JS есть конструктор прям с таким же форматом даты.
 

Yaroslav2015

Client
Регистрация
21.12.2015
Сообщения
39
Благодарностей
9
Баллы
8
сори ребят а как сюда вставить переменные
  1. var date1 = new Date("Mon, MyData 21:39:45 +0000");
  2. var date2 = new Date("Mon, 30 Dec 2014 21:39:45 +0000");
пробовал так не получилось
project.Variables["MyData"].Value
спасибо
 
  • Спасибо
Реакции: Alex62

doc

Client
Регистрация
30.03.2012
Сообщения
8 613
Благодарностей
4 601
Баллы
113
вместо "Mon, MyData 21:39:45 +0000"
"{-Variable.MyData-}"
 
  • Спасибо
Реакции: Alex62

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
Для сравнения дат и получения разницы я пользуюсь переводом в UnixTime.
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
Код:
DateTime date = Convert.ToDateTime("30 Dec 2014 21:39:45 +0000");
DateTime date1 = Convert.ToDateTime("30 Dec 2014 21:40:45 +0000");
TimeSpan diff = date1 - date;
return Math.Floor(diff.TotalSeconds);
 

Yaroslav2015

Client
Регистрация
21.12.2015
Сообщения
39
Благодарностей
9
Баллы
8
а добавлять каки ето dll нужно? скопировал код вылазит с десяток ошибок в проджектмейкере?
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113

Yaroslav2015

Client
Регистрация
21.12.2015
Сообщения
39
Благодарностей
9
Баллы
8
вот так у меня ((((
 

Вложения

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113

Yaroslav2015

Client
Регистрация
21.12.2015
Сообщения
39
Благодарностей
9
Баллы
8
билд v5.9.5.1
компоненты все как у вас(((
 

Вложения

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113

mig-z

Client
Регистрация
05.12.2014
Сообщения
303
Благодарностей
71
Баллы
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");
}
 
  • Спасибо
Реакции: Lest и Alex62

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113

mig-z

Client
Регистрация
05.12.2014
Сообщения
303
Благодарностей
71
Баллы
28
project.Variables["m_time_start"].Value
Не работает. Что я не так пишу?
Код:
DateTime date_start = Convert.ToDateTime("project.Variables["m_time_start"].Value");
DateTime date_site = Convert.ToDateTime("project.Variables["m_time_site"].Value");


if(date_start < date_site){
    return "true";
}else{
    throw new Exception("false");
}
 
  • Спасибо
Реакции: maxim.gutareff

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Никто не знает что у вас в переменных лежит, какая ошибка возникает и тд)
напишите подробнее.
 
  • Спасибо
Реакции: maxim.gutareff

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 944
Благодарностей
4 353
Баллы
113

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
  • Спасибо
Реакции: Astraport

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
354
Благодарностей
56
Баллы
28
что у меня не так с кодом? хочу вычислить разницу между 2мя датами
http://c2n.me/3DjKu7s

DateTime date = Convert.ToDateTime(project.Variables["start_time"].Value);
DateTime date1 = Convert.ToDateTime(project.Variables["time_now"].Value);
TimeSpan diff = date1 - date;
return Math.Floor(diff.TotalSeconds);



еще такой код нашел на форуме, но тоже не пашет у меня

DateTime date = Convert.ToDateTime(project.Variables["start_time"].Value);
DateTime date1 = Convert.ToDateTime(project.Variables["time_now"].Value);
TimeSpan span = date1 - date;
double seconds = span.TotalSeconds;


Возможно понял свою ошибку: переменные start_time и time_now должны быть в формате 30 Dec 2014 21:39:45 +0000 но как в таком формате их быстро получить?
 
Последнее редактирование:

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
354
Благодарностей
56
Баллы
28
Входный формат даты неверный.
В лог смотрели?

Посмотреть вложение 16000
предполагаю, что переменные start_time и time_now должны быть в формате 30 Dec 2014 21:39:45 +0000 но как в таком формате их быстро получить?

примерно понял. получить дату {-TimeNow.Date-} и регексом немного подшлифовать
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
предполагаю, что переменные start_time и time_now должны быть в формате 30 Dec 2014 21:39:45 +0000 но как в таком формате их быстро получить?
Не обязательно в таком. Дата должна быть в действительном формате. То есть, в таком, как ее понимает система.
Получить дату можно достаточно банально:
C#:
return DateTime.Now.ToString();
 
  • Спасибо
Реакции: spbalexpiter

spbalexpiter

Client
Регистрация
24.11.2013
Сообщения
354
Благодарностей
56
Баллы
28
А может подскажете еще как реализовать такое: если разница больше 20 секунд, то выходить по красной ветке иначе по зеленой?
 

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
C#:
DateTime date1 = DateTime.Now; // получаем начальную дату
System.Threading.Thread.Sleep(10000); // ждем 10 секунд
DateTime date2 = DateTime.Now; // получаем дату завершения
TimeSpan diff = date2 - date1; // получаем разницу
return Math.Floor(diff.TotalSeconds); //переводим разницу в секунды
 
  • Спасибо
Реакции: spbalexpiter

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 223
Баллы
113
А может подскажете еще как реализовать такое: если разница больше 20 секунд, то выходить по красной ветке иначе по зеленой?
Нужно дополнить код из предыдущего сообщения:
C#:
DateTime date1 = DateTime.Now;
System.Threading.Thread.Sleep(10000);
DateTime date2 = DateTime.Now;
TimeSpan diff = date2 - date1;
if (Math.Floor(diff.TotalSeconds) < 20)
    {
        return "True";
    }
else
    {
       throw new Exception("False");
    }
Надеюсь разберетесь без комментариев :-)))
 
  • Спасибо
Реакции: spbalexpiter

ya589603072

Пользователь
Регистрация
21.12.2014
Сообщения
34
Благодарностей
4
Баллы
8
прочитал ветку но не дошло.((( имею дату в формате {-TimeNow.Дата-} 12/20/2016 как мне получить разницу в количестве днях от текущей даты?
 

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