我得到了一个失败的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格式输出的。
有谁知道为什么或发生这种情况?
答案 0 :(得分:1)
这里的问题是Time.parse
的行为。用Time.zone.parse
替换该通话允许ActiveSupport::TimeWithZone
虽然the implementation的详细信息可能会有所不同,但您可以从此文档中了解Time.parse
的设计目标:
由于全世界本地定义的时区缩写之间存在大量冲突,因此该方法无意理解所有这些冲突。
GMT被视为默认时间,并与您上面报告的输出相匹配。用ActiveSupport::TimeWithZone
替换它允许Rails配置修改默认期望值。