JRuby是否正确处理Time.new和时区?

时间:2013-10-17 15:38:42

标签: ruby time jruby

我无法在JRuby中正确使用Ruby的Time.new语法,即使这可以在文档中描述的其他Ruby版本中使用。我认为,这种行为在各方面都有所不同,并且在某些方面是不正确的。我在网上做了一些研究,看起来这并不是众所周知的。

在我解决这个问题或提交给JRuby小组的麻烦之前,我想确保我不会愚蠢。所以为了比较,我将使用一个非常不同的行为的基本例子。

在JRuby:

jruby-1.6.8 :007 > JRUBY_VERSION
 => "1.6.8"
jruby-1.6.8 :008 > RUBY_VERSION
 => "1.9.2"
jruby-1.6.8 :009 > Time.new(2012, 10, 11, 0, 0, 0, '+09:00')
 => 2012-10-11 00:00:00 -0400
jruby-1.6.8 :010 > Time.new(2012, 10, 11, 0, 0, 0, '+9:00')
 => 2012-10-11 00:00:00 -0400

在Ruby中:

1.9.2p320 :002 > RUBY_VERSION
 => "1.9.2"
1.9.2p320 :003 > Time.new(2012, 10, 11, 0, 0, 0, '+09:00')
 => 2012-10-11 00:00:00 +0900
1.9.2p320 :004 > Time.new(2012, 10, 11, 0, 0, 0, '+9:00')
 ArgumentError: "+HH:MM" or "-HH:MM" expected for utc_offset

我做错了什么?

1 个答案:

答案 0 :(得分:3)

ruby​​有很多无证件的行为。因为在所有运行时之间存在一些差异。

一个试图记录所有特殊部分的项目是RubySpec

您可以到这里查看您的示例是否有详细记录:https://github.com/rubyspec/rubyspec/blob/master/core/time/new_spec.rb