Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: AlexBrr on November 05, 2014, 11:40:54 PM

Title: Заданная дата в Unix время
Post by: AlexBrr on November 05, 2014, 11:40:54 PM
Собственно назрел вопрос. Необходимо организовать действия в определенную дату и время
Хотелось реализовать так:
1. Переводим заданную дату/время в аля Юникс время (отсчет с 1970 года)
2. Сравниваем получившееся значение с константой $_time_t

Или может можно проще реализовать? Наверняка уже многие встречались с данным вопросом. В других языках есть такие команды, может кто алгоритм посоветует....мозг кипит уже
Title: Re: Заданная дата в Unix время
Post by: Oraven on November 06, 2014, 08:56:56 AM
Константа - от слова постоянный а $_time_t это текущее значение.

В кликере есть системные переменные даты и времени
$_time_h Текущий час
$_time_m Текущая минута
$_time_s Текущая секунда
$_date_y Текущий год
$_date_m Текущий месяц
$_date_d Текущие число

Но сравнивать конечно удобнее единое число.
Code: (clickermann) [Select]
SUB(время, $D_c, $h_count, $m_count, $s_count)
   $d_co = 86400*$D_c
   $tms2 = ($h_count*3600)+($m_count*60)+$s_count+$d_co
   $tms = ($_time_h*3600)+($_time_m*60)+$_time_s
   $tmsu = 86400-$tms+$_time_t+$tms2
   $tmsu = $tmsu-86400
END_SUB

//Первая цифра это день, 0 текущий, 1 следующий и тд.
//Следующие 3 цифры это час, минута, секунда
// время возвращается в переменную $tmsu
время(0,9,42,30) // устанавливаем дату в Unix

//=============================================

skip:

IF($tmsu < $_time_t) // ждем установленной даты
   $tmsu = $tmsu+10 // добавляем 10 секунд или что то другое
   LOGWRITE ("Сработало")
END_IF

//LOGWRITE ("Веремя Unix: ", $tmsu)

WAIT(1)

GOTO(skip)

Вот кстати Unix конвертер
http://www.cy-pr.com/tools/time/#stop (http://www.cy-pr.com/tools/time/#stop)
Title: Re: Заданная дата в Unix время
Post by: HayTuJlyc on July 08, 2016, 12:56:59 AM
не знаю к месту ли

Как сделать дату + 2 недели от текущей в формате dd.mm.yyyy

с форматом понятно. а вот как 2 недели прибавить?..
Title: Re: Заданная дата в Unix время
Post by: HayTuJlyc on July 08, 2016, 02:11:18 AM
прибавить к $_time_t 1209600 я могу. а вот как из полученного времени отжать дату в нужном формате?
Title: Re: Заданная дата в Unix время
Post by: Oraven on July 08, 2016, 08:15:40 AM
прибавить к $_time_t 1209600 я могу. а вот как из полученного времени отжать дату в нужном формате?

Давно уже был написан скрипт вывода даты из времени Unix.
http://crapware.aidf.org/forum/index.php?topic=36.msg929#msg929 (http://crapware.aidf.org/forum/index.php?topic=36.msg929#msg929)
Тогда в кликере еще не было системных переменных выводящих день, месяц и год.
Немного подправил и вот

Code: (clickermann) [Select]
SUB(U_DATE,$_t_t)
   $_d_voi = 0.5
   $_d_break = 0
   $_d_y = 1970
   $_d_m = 1
   $_d_d = ROUND(($_t_t / (3600 * 24)) - $_d_voi, 0) + 1
   
   WHILE($_d_break = 0)
      $_d_arg1 = $_d_y-1968
      $_d_arg2 = 4     
      IF($_d_arg1-(ROUND(($_d_arg1/$_d_arg2)-$_d_voi,0)*$_d_arg2) = 0)
         $_d_nd = 366
      ELSE
         $_d_nd = 365
      END_IF
     
      if($_d_d > $_d_nd)
         INC($_d_d, 0-$_d_nd)
         INC($_d_y, 1)
      ELSE
         $_d_break = 1
      END_IF
   END_CYC
   $_d_break = 0
   
   WHILE($_d_break = 0)
      $_d_arg1 = $_d_y-1968
      $_d_arg2 = 4
      IF( ($_d_arg1-(ROUND(($_d_arg1/$_d_arg2)-$_d_voi,0)*$_d_arg2) = 0) & ($_d_m = 2) )
         $_d_nd = 29
      ELSE
         $_d_nd = INT(STRCUT("31,28,31,30,31,30,31,31,30,31,30,31", (($_d_m-1) * 3) + 1, 2))
      END_IF
      IF($_d_d > $_d_nd)
         INC($_d_d, 0-$_d_nd)
         INC($_d_m, 1)
      ELSE
         $_d_break = 1
      END_IF
   END_CYC
END_SUB

U_DATE($_time_t+1209600) // вызываем подпрограмму с параметрами текущее время плюс две недели
LOGWRITE ($_d_d,".",$_d_m,".",$_d_y) // в эти переменные выводится день, месяц и год (Смотри лог)

HALT
Title: Re: Заданная дата в Unix время
Post by: HayTuJlyc on July 10, 2016, 07:42:12 AM
спасибо.

добавил еще

Code: (clickermann) [Select]
IF(STRLEN($_d_d)<2)
   $_d_d = STRCONCAT ("0", $_d_d)
END_IF
IF(STRLEN($_d_m)<2)
   $_d_m = STRCONCAT ("0", $_d_m)
END_IF
IF(STRLEN($_d_y)<2)
   $_d_y = STRCONCAT ("0", $_d_y)
END_IF

чтоб формат был dd.mm.yyyy