3

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

我可以将这些数据作为字符串或数字或两者兼而有之吗?

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

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

4

2 回答 2

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;
    }
  }
}

应用程序在 example.com 上运行两次。一次时区设置为纽约,另一次时间设置为丹佛

替代文字

我使用此站点http://www.statoids.com/tus.html来获取用于时区的正确字符串。我不知道它们是否都有效。我刚找到这个网站并尝试了一些,它们工作得很好,所以请谨慎使用。

于 2010-12-28T01:04:30.983 回答
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})  
于 2010-12-28T20:05:56.990 回答