日期时间的匹配模式问题

发布于 2022-09-11 14:45:48 字数 420 浏览 14 评论 0

碰到个问题,来论坛请教一下,主要是对以下两种时间进行匹配,不使用判断
Wed Oct 24 13:59:18 2018
Wed Oct 9 13:59:18 2018

这次碰到一个比较奇怪的日期格式,单位数的日期不是正常的0x,而是空格x,这就坐蜡了,原本写的"EEE MMM dd HH:mm:ss yyyy"匹配规则直接就报错了,这又是某个工具里面嵌套的,不太好加判断,问下大家能不能同时匹配这两,其嵌套的pattern使用的是以下网站的DateTimeFormat.

pattern:
https://www.joda.org/joda-tim...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

慵挽 2022-09-18 14:45:48

这个是GRAYLOG日志分析系统的,感谢github上热心的开发者,问题已经解决,最后还是加了grok正则匹配判断日期格式,附pipelines规则

规则一:

rule "prase date "
// we want to create ISO8601 Timestamps
// make 'Wed Oct 24 13:59:18 2018' ISO8601
when
    grok(pattern: "%{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{YEAR}", value:to_string($message.transaction_time_stamp)).matches == true
then
    let time = parse_date(value:to_string($message.transaction_time_stamp), pattern:"EEE MMM dd HH:mm:ss yyyy", timezone:"Asia/Shanghai");
    set_field("timestamp",time);
end

规则二:

rule "prase date (single number day)"
// we want to create ISO8601 Timestamps
// make 'Wed Oct  4 13:59:18 2018' ISO8601
// cisco did not use 05 but <space>5 for days with a single digit
when
    grok(pattern: "%{DAY} %{MONTH}  %{MONTHDAY} %{TIME} %{YEAR}", value:to_string($message.transaction_time_stamp)).matches == true
then
    let time = parse_date(value:to_string($message.transaction_time_stamp), pattern:"EEE MMM  d HH:mm:ss yyyy", timezone:"Asia/Shanghai");
    set_field("timestamp",time);
end

附github提问链接:
https://github.com/Graylog2/g...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文