Ruby on rails TIme.now和以不同格式创建的_?

Ruby on rails TIme.now和以不同格式创建的_?,ruby-on-rails,json,ruby-on-rails-3,Ruby On Rails,Json,Ruby On Rails 3,我注意到,在一个模型中,当将模型呈现到json时,在处创建的属性的格式如下: 2013-05-20T22:12:31Z 调用Time.now并将其呈现为json会给出如下格式: 2013-05-21 00:04:03 +0000 我正在尝试为一个iOS应用程序创建一个web服务,在这个应用程序中,我需要比较当前时间和创建的时间,但由于时区不同,无法进行比较 在属性处创建的中的Z代表什么?那是时区吗?如果是,如何更改时区。现在时区以匹配 如果Z不是时区,则任何建议?ActiveRecord时间

我注意到,在一个模型中,当将模型呈现到
json
时,在
处创建的
属性的格式如下:

2013-05-20T22:12:31Z
调用
Time.now
并将其呈现为
json
会给出如下格式:

2013-05-21 00:04:03 +0000
我正在尝试为一个
iOS
应用程序创建一个web服务,在这个应用程序中,我需要比较当前时间和创建的时间,但由于时区不同,无法进行比较

属性处创建的
中的
Z
代表什么?那是时区吗?如果是,如何更改
时区。现在
时区以匹配


如果
Z
不是时区,则任何建议?

ActiveRecord时间戳列(如created_at和updated_at)将作为类型加载,而Time.now将生成一个。这些类有不同的默认格式,这是造成差异的原因

正如您所猜测的,Z和+0000都与datetime的时区相关。您创建的at值表示为一个日期,其中Z表示Zulu,这是表示UTC或GMT 0偏移时区的另一种方式。好消息是,这意味着您的两个日期都已在UTC

我不确定你的用例是什么,但是如果可能的话,你应该考虑在服务器上进行这个日期比较,而不是在iOS客户端。在这种情况下,字符串表示并不重要,因为日期的基本数值将被比较


如果确实需要在iOS客户端上进行比较,那么在呈现JSON时需要显式格式化这两个日期值,以便获得一致的表示。您需要执行
created.strftime(…)
Time.now.strftime(…)
来格式化这些值。ISO 8601对于API中的日期格式是一个很好的选择,尽管您可能希望查看并了解在您使用的iOS库中最容易使用的格式。

谢谢。我意识到我遇到的问题实际上在我的比较代码中,但这是非常有用的信息,可以让我创建更好的比较算法。