gpt4 book ai didi

java - 如何像 Java 一样从 Ruby 获取本地时区名称?

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:14 24 4
gpt4 key购买 nike

我需要从 Ruby 中找出本地机器时区名称(从 TZInfo::Timezone.all_identifiers 值列表)。我需要它以便我可以正确设置 Oracle 数据库 session 时区,以便我可以正确处理数据库中带有时区值的时间戳。

我想获得与在 Java 中使用 java.util.TimeZone.getDefault().getID()(在我的计算机上返回“Europe/Riga”)可以获得的值相同的值。据我查看 JDK 源代码,有平台特定的 C 函数可以找到这个默认时区。

所以当使用 JRuby 时,我可以调用这个 Java 方法。但我需要一种可用于 MRI 的解决方案。

我尝试使用 Time.now.zone 但它返回不同的结果(在我的例子中是“EET”或“EEST”),这取决于当前是否是夏令时。所以我真的需要获取前面提到的位置格式(如“欧洲/里加”),它在切换到夏令时时正确指定日期。

有什么建议吗?

最佳答案

JRuby 出于兼容性原因返回类似 EET/CDT 的值,因为 C-Ruby 也是这样做的。但是,由于 JRuby 可以轻松调用 Java 层,您可以像这样调用它:

require 'java'
id = java.util.TimeZone.getDefault().getID()

或者,用更像 Ruby 的语法:

require 'java'
id = java.util.TimeZone.get_default.get_id

或者,您可以使用 JodaTime:

require 'java'
id = org.joda.time.DateTimeZone.getDefault.getID

关于java - 如何像 Java 一样从 Ruby 获取本地时区名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1666155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com