Author Topic: Заданная дата в Unix время  (Read 3271 times)

0 Members and 1 Guest are viewing this topic.

AlexBrr

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

Или может можно проще реализовать? Наверняка уже многие встречались с данным вопросом. В других языках есть такие команды, может кто алгоритм посоветует....мозг кипит уже

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Заданная дата в Unix время
« Reply #1 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
« Last Edit: November 06, 2014, 08:58:47 AM by Oraven »

HayTuJlyc

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Заданная дата в Unix время
« Reply #2 on: July 08, 2016, 12:56:59 AM »
не знаю к месту ли

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

с форматом понятно. а вот как 2 недели прибавить?..

HayTuJlyc

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Заданная дата в Unix время
« Reply #3 on: July 08, 2016, 02:11:18 AM »
прибавить к $_time_t 1209600 я могу. а вот как из полученного времени отжать дату в нужном формате?

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Заданная дата в Unix время
« Reply #4 on: July 08, 2016, 08:15:40 AM »
прибавить к $_time_t 1209600 я могу. а вот как из полученного времени отжать дату в нужном формате?

Давно уже был написан скрипт вывода даты из времени Unix.
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

HayTuJlyc

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Заданная дата в Unix время
« Reply #5 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