我需要从ruby(从tzinfo::timezone.all\u标识符值列表)中找出本地机器时区名称。我需要它,这样我就可以正确地设置oracle数据库会话时区,这样我就可以用数据库中的时区值正确地处理时间戳。
我想得到与java中java.util.timezone.getdefault().getid()相同的值(在我的计算机上返回“europe/riga”)。据我所知,jdk源代码中有一些特定于平台的c函数,可以找到这个默认时区。
所以在使用jruby时,我可以调用这个java方法。但我需要一个能和核磁共振一起使用的解决方案。
我尝试使用time.now.zone,但它返回不同的结果(在我的例子中是“eet”或“eest”),这取决于当前是否是夏令时。所以我真的需要使用前面提到的位置格式(比如“europe/riga”),它正确地指定了切换到夏令时的日期。
有什么建议吗?
1条答案
按热度按时间2skhul331#
由于兼容性的原因,jruby返回类似eet/cdt的值,因为c-ruby也是这样做的。但是,由于jruby可以很容易地调用java层,因此可以像tat那样调用它:
或者,用更像ruby的语法:
或者,您可以使用jodatime: