在KRL我如何获得当前年,月和日?

时间:2010-12-28 00:30:00

标签: time krl

我正在开发一个应用程序,我需要获取当前年,月和日。有没有办法在规则的前块中获取此信息?

我可以将这些数据作为字符串或数字或两者来获取吗?

http://docs.kynetx.com/docs/Time上记录了时间函数,但它们似乎都不适用于我想要做的事情。

有没有办法在获取此数据时设置时区?

2 个答案:

答案 0 :(得分:4)

我能够使用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;
    }
  }
}

App在example.com上运行两次。将时区设置为纽约并将其他时间设置为丹佛

alt text

我使用此网站http://www.statoids.com/tus.html来获取用于时区的正确字符串。我不知道他们是否全部工作。我刚刚找到了这个网站,并尝试了一些,他们的工作是谨慎使用。

答案 1 :(得分:3)

也许文档被还原了。为方便起见,这里是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})