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库中最容易使用的格式。谢谢。我意识到我遇到的问题实际上在我的比较代码中,但这是非常有用的信息,可以让我创建更好的比较算法。