В KRL Как узнать текущий год, месяц и день? - PullRequest
3 голосов
/ 28 декабря 2010

Я работаю над приложением, в котором мне нужно получить текущий год, месяц и день.Есть ли способ получить эту информацию в предварительном блоке правила?

Могу ли я получить эти данные в виде строки или числа или обоих?

В настоящее время есть функции времени, документированные на http://docs.kynetx.com/docs/Time но ни один из них, похоже, не работает для того, что я пытаюсь сделать.

Есть ли способ установить часовой пояс при получении этих данных?

Ответы [ 2 ]

4 голосов
/ 28 декабря 2010

Я смог сделать это, используя strftime, что представляется недокументированной функцией, поэтому используйте с осторожностью.

ruleset a60x518 {
  meta {
    name "date-test"
    description <<
      date-test
    >>
    author "Mike Grace"
    logging on
  }

  rule testing {
    select when pageview ".*"
    pre {
      retTime = time:strftime(time:now({"tz":"America/Denver"}), "%c");
      month = time:strftime(time:now({"tz":"America/Denver"}), "%B");
      year = time:strftime(time:now({"tz":"America/Denver"}), "%Y");
      day = time:strftime(time:now({"tz":"America/Denver"}), "%d");
    }
    {
      notify("time",retTime) with sticky = true;
      notify("month",month) with sticky = true;
      notify("year",year) with sticky = true;
      notify("day",day) with sticky = true;
    }
  }
}

Приложение запускается на example.com дважды. Однажды с часовым поясом, установленным на Нью-Йорк, и другим временем, установленным на Денвер

alt text

Я использовал этот сайт http://www.statoids.com/tus.html, чтобы получить правильные строки для часового пояса. Я понятия не имею, все ли они работают. Я только нашел этот сайт и попробовал несколько, и они работали, поэтому используйте с осторожностью.

3 голосов
/ 28 декабря 2010

Возможно, документы были возвращены. Для удобства вот документация на strftime:

время: STRFTIME ()

Преобразование строки даты и времени в другой формат

Usage
    time:strftime(`<string>`,`<format>`)    

Допустимые аргументы формата для strftime соответствуют соглашениям POSIX strftime .

Образцы

time:strftime(xTime,”%F %T”)                 # 2010-10-06 18:15:24         
time:strftime(xTime,”%F”)                    # 2010-10-06         
time:strftime(xTime,”%T”)                    # 18:19:29         
time:strftime(xTime,”%A %d %b %Y”)           # Wednesday 06 Oct 2010
time:strftime(xTime,”%c”)                    # Oct 6, 2010 6:25:55 PM

Другие функции времени:

время: сейчас ()

Текущее время / дата на основе данных о местоположении пользователя

Usage    
    time:now()
    time:now({“tz” : <timezone>) 

время: новый ()

Создание новой строки даты-времени RFC 3339 из строки (допускает некоторую гибкость в форматировании исходной строки)

Usage 
    time:new()                     # Equivalent to time:now()
    time:new(<string>)   

Допустимые форматы для строки даты и времени можно найти в ISO8601 (v2000) .

время: добавить ()

Добавить (или вычесть) определенное количество единиц времени к исходной строке

Usage  
    time:add(<string>,{<unit> : n})  
...