将时区字符串(即美国/东部)转换为偏移量

dbush

我正在寻找一种纯Ruby的方法,该方法采用时区字符串(例如“ US / Eastern”),并将其与时间戳的字符串表示形式一起使用,以转换为带有时区的时间戳。

我到目前为止发现的所有内容都strptime支持短时区名称(如“ EST”)或时区偏移量(如“ -0500”),但不支持完整的时区字符串。

我需要能够将它作为Logstash红宝石过滤器的一部分运行。我有一些JSON,其中包含没有时区的时间戳,如下所示:

{
 "event": {
    "created": "2021-02-15_11-26-29",
  },
  "Accounts": [
    {
      "Name": "operator",
      "Caption": "SERVER\\operator",
      "Domain": "SERVER",
      "PasswordChangeable": "False",
      "PasswordRequired": "True",
      "PasswordExpires": "False",
      "Disabled": "False",
      "Lockout": "False",
      "LocalAccount": "True",
      "FullName": "operator",
      "Status": "OK",
      "LastLogon": "07/08/2020 2:14:13 PM"
    },
    ...
  ]
}

对于event.created字段,我可以使用date过滤器:

    date {
        match => [ "[event][created]", "yyyy-MM-dd_HH-mm-ss" ]
        timezone => "${TIMEZONE}"
        target => "[event][created]"
    }

其中${TIMEZONE}的环境变量包含完整的时区名称,即“ US / Eastern”。但是对于Acounts.LastLogin字段,我无法使用date过滤器,因为它位于可变长度的列表中,因此我不得不求助于ruby过滤器。我能找到的最接近的是:

    ruby {
        code => 'event.get("[Accounts]").each_index {|x|
                    tz = "-0500"
                    last_logon_str = event.get("[Accounts][#{x}][LastLogon]")
                    last_logon = DateTime.strptime(last_logon_str + " " + tz, "%m/%d/%Y %I:%M:%S %p %z")
                    event.set("[users][#{x}][last_logon]", last_logon.strftime("%Y-%m-%dT%H:%M:%S%z"))
                 }'
    }

但这当然是使用硬编码的时区偏移量,而不是包含全名的变量。

Timehttps://ruby-doc.org/core-2.6/Time.html上寻找对象的文档指出,Time可以使用来创建对象timezone

或时区对象:

tz = timezone("Europe/Athens") # Eastern European Time, UTC+2
Time.new(2002, 10, 31, 2, 2, 2, tz) #=> 2002-10-31 02:02:02 +0200

然后可以用来提取偏移量,但是找不到timezone任何地方的引用

处理此问题的最佳方法是什么?

时区是TZInfo类的一部分您需要它。以下代码

    ruby {
        code => '
            require "tzinfo"
            tz = TZInfo::Timezone.get(ENV["TIMEZONE"])
            event.set("offset", tz.observed_utc_offset())
        '
    }

"offset" => -18000,当$ TIMEZONE是“ US / Eastern”时,我会收到

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP-将字符串时区格式转换为偏移量整数

来自分类Dev

将时区pytz字符串转换为python / django中的偏移量

来自分类Dev

使用Joda Time将UTC偏移量转换为美国时区

来自分类Dev

接收包括字符串的时区偏移量的日期,并使用该时区转换为其他格式

来自分类Dev

将字符串转换为日期时的Javascript Date()函数和GMT偏移量

来自分类Dev

将具有偏移量的字符串时间戳转换为Java日期

来自分类Dev

将时区偏移量转换为整数

来自分类Dev

将时区偏移量“+00:00”转换为分钟

来自分类Dev

忽略时区偏移量的日期字符串

来自分类Dev

Python使用时区偏移量转换日期/时间字符串

来自分类Dev

Java将ISO 8601字符串转换为日期,忽略偏移量

来自分类Dev

我有一个特定的时间作为字符串(“美国东部时间7:00 PM”)。Joda-Time可以将字符串转换为用户的时区吗?

来自分类Dev

如何将格式为 'YYYY-DD-MM HH:MI:SS.MS +00:00' 的字符串(其中最后四个字符是时区偏移量)转换为 postgres timestamptz?

来自分类Dev

转换为缺少的加号偏移量datetime字符串为正确的datetime

来自分类Dev

如何使用UTC偏移量转换字符串

来自分类Dev

如何获取已知时区字符串的时区偏移量?

来自分类Dev

Java将字符串yyyy-MM-dd HH:mm:ss转换为加拿大/东部时区的时间戳

来自分类Dev

将带有偏移量的日期字符串转换为忽略偏移量的自定义格式

来自分类Dev

如何将GMT的偏移量转换为本地时区?

来自分类Dev

如何将时区偏移量转换为另一种格式

来自分类Dev

解析包含“ T”和+时区偏移量的日期字符串

来自分类Dev

将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

来自分类Dev

将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

来自分类Dev

boost spirit X3解析器,可将偏移量转换为原始字符串

来自分类Dev

在bash Shell脚本中将带有偏移量字符串的GMT转换为MST

来自分类Dev

boost spirit X3解析器,可将偏移量转换为原始字符串

来自分类Dev

如何从时区名称(美国东部标准时间/印度标准时间)获取时区偏移量?

来自分类Dev

使用Glyphter.com将SVG转换为字体时的偏移量-偏移量

来自分类Dev

使用Glyphter.com将SVG转换为字体时的偏移量-偏移量

Related 相关文章

  1. 1

    PHP-将字符串时区格式转换为偏移量整数

  2. 2

    将时区pytz字符串转换为python / django中的偏移量

  3. 3

    使用Joda Time将UTC偏移量转换为美国时区

  4. 4

    接收包括字符串的时区偏移量的日期,并使用该时区转换为其他格式

  5. 5

    将字符串转换为日期时的Javascript Date()函数和GMT偏移量

  6. 6

    将具有偏移量的字符串时间戳转换为Java日期

  7. 7

    将时区偏移量转换为整数

  8. 8

    将时区偏移量“+00:00”转换为分钟

  9. 9

    忽略时区偏移量的日期字符串

  10. 10

    Python使用时区偏移量转换日期/时间字符串

  11. 11

    Java将ISO 8601字符串转换为日期,忽略偏移量

  12. 12

    我有一个特定的时间作为字符串(“美国东部时间7:00 PM”)。Joda-Time可以将字符串转换为用户的时区吗?

  13. 13

    如何将格式为 'YYYY-DD-MM HH:MI:SS.MS +00:00' 的字符串(其中最后四个字符是时区偏移量)转换为 postgres timestamptz?

  14. 14

    转换为缺少的加号偏移量datetime字符串为正确的datetime

  15. 15

    如何使用UTC偏移量转换字符串

  16. 16

    如何获取已知时区字符串的时区偏移量?

  17. 17

    Java将字符串yyyy-MM-dd HH:mm:ss转换为加拿大/东部时区的时间戳

  18. 18

    将带有偏移量的日期字符串转换为忽略偏移量的自定义格式

  19. 19

    如何将GMT的偏移量转换为本地时区?

  20. 20

    如何将时区偏移量转换为另一种格式

  21. 21

    解析包含“ T”和+时区偏移量的日期字符串

  22. 22

    将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

  23. 23

    将datetime转换为string始终默认为系统时区偏移量,需要在结果中获取用户的时区偏移量

  24. 24

    boost spirit X3解析器,可将偏移量转换为原始字符串

  25. 25

    在bash Shell脚本中将带有偏移量字符串的GMT转换为MST

  26. 26

    boost spirit X3解析器,可将偏移量转换为原始字符串

  27. 27

    如何从时区名称(美国东部标准时间/印度标准时间)获取时区偏移量?

  28. 28

    使用Glyphter.com将SVG转换为字体时的偏移量-偏移量

  29. 29

    使用Glyphter.com将SVG转换为字体时的偏移量-偏移量

热门标签

归档