Сравнение дат, прошло ли указанное количество минут или часов

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Всем привет. Только погружаюсь в тему самостоятельного ботоостроения. Есть задача при Завершении проекта записать в переменную текущую дату и время + несколько часов. Далее при старте проекта, сравнить текущие дату и время с записанными ранее в переменную. В зависимости от результатов сравнения пустить проект по красной или зелёной ветке. По форуму искал несколько часов. Понимаю что нужно использовать действие свой код с#. Найденные на форуме примеры не смог успешно повторить в проекте.
Уважаемые опытные пользователи, помогите реализовать задуманное...
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Есть задача при Завершении проекта записать в переменную текущую дату и время + несколько часов.
Задача поставлена не корректно - после выполнения проекта содержимое переменной будет уничтожено сборщиком мусора.
Нужно сохранять содержимое переменной куда-то - в список, в таблицу, в базу данных, на какой-то сайт и тп (не важно в целом куда).
А уже потом, когда проект стартанёт заново - нужно обратиться в это место и оттуда прочитать это значение.

Далее при старте проекта, сравнить текущие дату и время с записанными ранее в переменную.
Собственно что и описал выше - взять содержимое например текстового файла, в который был сохранен результат в прошлом выполнении, поместить в переменную, и уже потом сравнивать.
В зависимости от результатов сравнения пустить проект по красной или зелёной ветке. По форуму искал несколько часов. Понимаю что нужно использовать действие свой код с#. Найденные на форуме примеры не смог успешно повторить в проекте.
Уважаемые опытные пользователи, помогите реализовать задуманное...
Если совсем просто - то примерно так return DateTime.Now.AddHours( 10).ToString();, а дальше уже с содержимим делать все что было нужно (сохранять куда-то, потом считывать, потом сравнивать). Где-то в конкурсных статьях была статья по работе с датами (там будут примеры конвертации в строки и обратно в нужном формате).
 

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Задача поставлена не корректно - после выполнения проекта содержимое переменной будет уничтожено сборщиком мусора.
Нужно сохранять содержимое переменной куда-то - в список, в таблицу, в базу данных, на какой-то сайт и тп (не важно в целом куда).
А уже потом, когда проект стартанёт заново - нужно обратиться в это место и оттуда прочитать это значение.
Это я делаю.
 

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Если совсем просто - то примерно так return DateTime.Now.AddHours( 10).ToString();, а дальше уже с содержимим делать все что было нужно (сохранять куда-то, потом считывать, потом сравнивать). Где-то в конкурсных статьях была статья по работе с датами (там будут примеры конвертации в строки и обратно в нужном формате).
С Вашими подсказками удалось записать при завершении проекта в переменную дату и время + несколько часов
 

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8
Собственно что и описал выше - взять содержимое например текстового файла, в который был сохранен результат в прошлом выполнении, поместить в переменную, и уже потом сравнивать.
Как теперь сравнить будущую дату и время находящуюся в переменной и текущую дату и время, пока не ясно.
Но пол пути пройдено. Спасибо.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 453
Баллы
113
Как теперь сравнить будущую дату и время находящуюся в переменной и текущую дату и время, пока не ясно.
Но пол пути пройдено. Спасибо.
Те даты, которые получились в результате, есть в переменных Зенно подставляем в код:
return DateTime.Parse("15.12.2021") > DateTime.Parse("12.12.2021");

Если true - первая дата больше, если false - вторая дата больше.
Переменные Зенно в коде указываются так, как ниже.
Естественно переменные d1 и d2 должны быть созданы и содержать корректные данные.
return DateTime.Parse(project.Variables["d1"].Value) > DateTime.Parse(project.Variables["d2"].Value);
 
  • Спасибо
Реакции: fazan

fazan

Client
Регистрация
25.12.2014
Сообщения
97
Благодарностей
9
Баллы
8

ex3maL

Client
Регистрация
22.05.2020
Сообщения
359
Благодарностей
267
Баллы
63
Спасибо. Все работает, как задумывалось.
можно еще так делать

C#:
//project.Variables["dateCheck"].Value = DateTime.UtcNow.AddMinutes(120).ToString();
//Начальное время по УТЦ + 2 часа.


string begStr = DateTime.Parse(project.Variables["dateCheck"].Value).ToString("dd/MM/yyyy HH:mm:ss");
string endStr = DateTime.UtcNow.ToString("dd/MM/yyyy HH:mm:ss");
DateTime t1 = Convert.ToDateTime(begStr);
DateTime t2 = Convert.ToDateTime(endStr);

TimeSpan ts = t2.Subtract(t1);
int sek = int.Parse(ts.TotalSeconds.ToString());

// Красная ветка, если прошло больше 5 минут ( 300 сек )
if (sek > 300) {
    string a = string.Format("Прошло {0} секунд, больше 5 минут!", ts.TotalSeconds);
    project.SendErrorToLog(a, a, true);
    throw new Exception(); // выход по красной
}

// Зеленая ветка и оповещение об оставшемся времени
else{
    string a = ts.TotalSeconds.ToString().Replace("-", "");
    a = "До назначенной даты осталось: " + a + " секунд";
    project.SendWarningToLog(a, a, true);
}
 
  • Спасибо
Реакции: fazan

ex3maL

Client
Регистрация
22.05.2020
Сообщения
359
Благодарностей
267
Баллы
63

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 526
Благодарностей
1 323
Баллы
113
Всем привет. Только погружаюсь в тему самостоятельного ботоостроения. Есть задача при Завершении проекта записать в переменную текущую дату и время + несколько часов. Далее при старте проекта, сравнить текущие дату и время с записанными ранее в переменную. В зависимости от результатов сравнения пустить проект по красной или зелёной ветке. По форуму искал несколько часов. Понимаю что нужно использовать действие свой код с#. Найденные на форуме примеры не смог успешно повторить в проекте.
Уважаемые опытные пользователи, помогите реализовать задуманное...
Постарайтесь изучить данную статью про Даты
 
  • Спасибо
Реакции: fazan

Burklive

Client
Регистрация
10.05.2017
Сообщения
123
Благодарностей
33
Баллы
28
Выведет разницу в секундах:
var datetime1 = project.Variables["datetime1"].Value;
var datetime2 = project.Variables["datetime2"].Value;

DateTime date = Convert.ToDateTime(datetime1);
DateTime date1 = Convert.ToDateTime(datetime2);
TimeSpan diff = date1 - date;
return Math.Floor(diff.TotalSeconds);
 
  • Спасибо
Реакции: fazan

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