Rails时间戳UTC与

时间:2016-08-11 13:52:13

标签: ruby-on-rails ruby rspec

我得到了一个失败的rpsec测试,似乎系统时钟与Rails如何评估时间之间存在差异。

```

SPacket obj(*ptrObj);

```

由于某种原因expected: 2015-01-01 15:00:00.000000000 -0800 got: 2015-01-01 15:00:00.000000000 +0000 (compared using ==) Diff: @@ -1,2 +1,2 @@ -2015-01-01 15:00:00 -0800 +2015-01-01 15:00:00 UTC 强制字符串进入系统时钟的时区。但是正在测试的代码是以UTC格式输出的。

有谁知道为什么或发生这种情况?

1 个答案:

答案 0 :(得分:1)

这里的问题是Time.parse的行为。用Time.zone.parse替换该通话允许ActiveSupport::TimeWithZone

虽然the implementation的详细信息可能会有所不同,但您可以从此文档中了解Time.parse的设计目标:

  

由于全世界本地定义的时区缩写之间存在大量冲突,因此该方法无意理解所有这些冲突。

GMT被视为默认时间,并与您上面报告的输出相匹配。用ActiveSupport::TimeWithZone替换它允许Rails配置修改默认期望值。