Как прибавить время? Арифметика со временем.

  • Автор темы Автор темы trubiser
  • Дата начала Дата начала

trubiser

Client
Регистрация
02.12.2016
Сообщения
211
Реакции
14
Баллы
18
Всем привет.
Есть переменная со временем (11:12:21) Прошу подсказать как прибавить к этому времени 15 мин.
Если можно то прошу написать формулу:ah:
Спасибо!
 
Всем привет.
Есть переменная со временем (11:12:21) Прошу подсказать как прибавить к этому времени 15 мин.
Если можно то прошу написать формулу:ah:
Спасибо!
Здесь обсуждалось похожее:
Вместо AddDays используйте AddMinutes.
 
  • Оценить
Реакции: trubiser
Здесь обсуждалось похожее:
Вместо AddDays используйте AddMinutes.

Прошу подсказать:
Есть выражение: return TimeSpan.Parse("00:34:51").TotalSeconds.ToString(); которое переводит время ("00:34:51") в секунды.
Как в это выражение вставить переменную {-Variable.time-} в которой прописано время 00:34:51?
Заранее спасибо
 
Я такую проблему решал так:

1. Фиксируем время и сохраняем в переменную:

53141

2. Регуляркой выкусываем минуты и сохраняем в переменную:

5314253143

3. Обработкой переменных прибавляем 15, в результате в переменной time_new становится 22 мин.; до этого было, разумеется, 7 мин.:

53144

53145

Как вставить новое значение минут в переменную data – полагаю, вы в курсе. :-)
 
  • Оценить
Реакции: trubiser
Нашел ответ на свой вопрос, как прибавить 15 мин ко времени:

C#:
Развернуть Свернуть Копировать
// Переводим переменную {-Variable.time-} в строковую переменную "a" и конвертиуем время в секунды
string a = TimeSpan.Parse(project.Variables["time"].Value).TotalSeconds.ToString();
// конвертируем переменную "a" в тип int для сложения
int n = Convert.ToInt32(a);
// приюавляем ко времени 900 сек. (15 мин)
return n+900;
 
А мой метод без С# разве плох? :-)

Вот эта переменная фиксирует новое время вместо старого:
{-TimeNow.Date hh:{-Variable.time_new-}:ss-}

53147

53148
 
  • Оценить
Реакции: trubiser
  • Оценить
Реакции: Werti
  • Оценить
Реакции: socsecret.ru и Valandersi
Вот еще решение:
Если нужно подождать 30 мин (1800сек), но таймер включается позже заданного времени (и время включения таймера плавает).
{-Variable.time_post-} Время от которого нужно отсчитать 30 мин.

C#:
Развернуть Свернуть Копировать
//Заданное Время от которого должен начаться отчет
// Переводим переменную {-Variable.time_post-} в строковую переменную "a" и конвертиуем время в секунды
string a = TimeSpan.Parse(project.Variables["time_post"].Value).TotalSeconds.ToString();
// конвертируем переменную "a" в тип int для сложения
int b = Convert.ToInt32(a);

// Получить текущее время
var x = DateTime.Now.ToString("hh:mm:ss tt");
// конвертируем время в секунды
var y = TimeSpan.Parse(x).TotalSeconds.ToString();
int z = Convert.ToInt32(y);

return 1800-(z-b);

К примеру я получаю емейл и мне нужно подождать 30 мин с момента прихода письма (02:40:00). Парсер писем проверяет письма раз в 5 мин. и обнаружил письмо в 02:44:00.
Этот экшн позволяет ждать 30 мин от 02:40:00.
Результат выдается в секундах
 
Работать будет превосходно. 8-)
Поверите на слово, или привести подробные скрины? :-)
Дак ты привёл уже. Вот они

Посмотреть вложение 53147

Посмотреть вложение 53148

И по ним хорошо видно, что всё пойдёт не так, если на момент вычислений времени будет 45+ минут
 
епать, колотить.... зачем все это , если все делается одной строкой кода ? o_O

Ну меня обвинили в неправильности шаблона. :-) Если бы я был по национальности японец - то я бы вынужден был бы, для спасения своего честного имени - сделать себе харакири. :ap: Но я выбрал другой путь - проиллюстрировал, что и шаблоном эту задачу можно решить. :-)
 
никто не спорит, что можно. Можно и лбом гвозди забивать. Вопрос в целесообразности.

Ну а раз уж хочется такие задачи решать шаблоном - советую распаршенное время сразу перегонять в минимальные еденицы и работать уже с ними. Не нужны будут условия и т.д.
 
Вот еще решение:
Если нужно подождать 30 мин (1800сек), но таймер включается позже заданного времени (и время включения таймера плавает).
{-Variable.time_post-} Время от которого нужно отсчитать 30 мин.
Это мое решение дает сбои. Добрый человек дал такое решение сравнения времени, которое подошло мне.
Скрипт проверяет прошло ли 24 часа от заданной даты.

C#:
Развернуть Свернуть Копировать
var datetime_start = "12/03/2018 23:00:00"; // project.Variables["time_start"].Value;
var datetime_utc = DateTime.Parse(datetime_start).ToUniversalTime();
double hours = 24; //double.Parse(project.Variables["hours"].Value);
bool time_comparison = datetime_utc.AddHours(hours) < DateTime.UtcNow;
if (time_comparison)
{
    return hours+" час(ов) прошло с "+datetime_start;;
}
else
{
    return hours+" час(ов) не прошло с "+datetime_start;
    //если надо по false выйти:
    //throw new Exception (hours+" час(ов) не прошло c "+datetime_start);
}

 
Последнее редактирование:
  • Оценить
Реакции: Hannes
А в этом скрипте производится сравнение времени. Какое время (дата) позднее.

C#:
Развернуть Свернуть Копировать
// Присваиваем переменным stringTime1, stringTime2
// строковые значения из проекта
string stringTime1 = project.Variables["time1"].Value;
string stringTime2 = project.Variables["time2"].Value;

// Здесь объявляем переменные с нужным нам типом времени DateTime
DateTime time1, time2;

// Преобразовываем строковой тип времени в тип DateTime
bool compareTime1 = DateTime.TryParse(stringTime1, out time1);
bool compareTime2 = DateTime.TryParse(stringTime2, out time2);

// Вначале проверяем корректность преобразования
// если ошибка то переходим на красную ветку
if (compareTime1 && compareTime2)
{
    if (time1 > time2) // сравниваем два значения времени
    {
        return 1; // для примера здесь возвращаем 1
    }
    else
    {
        return 2;// для примера здесь возвращаем 2
    }
}
else
{
    return null; // завершаем сниппет с ошибкой
}
 
  • Оценить
Реакции: Hannes
Вот еще решение:
Если нужно подождать 30 мин (1800сек), но таймер включается позже заданного времени (и время включения таймера плавает).
{-Variable.time_post-} Время от которого нужно отсчитать 30 мин.

C#:
Развернуть Свернуть Копировать
//Заданное Время от которого должен начаться отчет
// Переводим переменную {-Variable.time_post-} в строковую переменную "a" и конвертиуем время в секунды
string a = TimeSpan.Parse(project.Variables["time_post"].Value).TotalSeconds.ToString();
// конвертируем переменную "a" в тип int для сложения
int b = Convert.ToInt32(a);

// Получить текущее время
var x = DateTime.Now.ToString("hh:mm:ss tt");
// конвертируем время в секунды
var y = TimeSpan.Parse(x).TotalSeconds.ToString();
int z = Convert.ToInt32(y);

return 1800-(z-b);

К примеру я получаю емейл и мне нужно подождать 30 мин с момента прихода письма (02:40:00). Парсер писем проверяет письма раз в 5 мин. и обнаружил письмо в 02:44:00.
Этот экшн позволяет ждать 30 мин от 02:40:00.
Результат выдается в секундах
Подскажите, есть ли вариант плюсуем время к примеру из переменой взять текущее время и прибавить к нему 10 минут, на выходе получить переменную с + 10 минут, более точный пример, сейчас 10:00 плюсуем 10, время в переменной становится 10:10
 
работа со временем, очень рекомендую работать в unixtime, очень удобно там все посекундно.
перевел любое время/дату unixtime и прибавляй, отнимай, очень удобно работать с секундами
 
работа со временем, очень рекомендую работать в unixtime, очень удобно там все посекундно.
перевел любое время/дату unixtime и прибавляй, отнимай, очень удобно работать с секундами
Не совсем понял уточните? Где найти unixtime? это кубик? Код?

Доп: Понял. не совсем то что нужно, просто прибавить время надо, записать в файл и когда время придет запустить шаблон
 
Последнее редактирование:

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