Ruby on rails Rails DateTime对象不是';这不是我所期望的
我是一名Java开发人员,对Ruby非常陌生,因此,如果这个问题有点太基本,请对我放轻松。:)我来这里是想知道是否有人能给我指出正确的方向 我正在写一个处理时间的应用程序,需要考虑时区。我很好奇Ruby在处理时区方面提供了什么,我发现Rails提供了一个DateTime类,可以满足我的需要 然而,当我创建DateTime时,它似乎没有我期望的方法。有人能解释一下这是怎么回事吗?以下是我在irb中看到的:Ruby on rails Rails DateTime对象不是';这不是我所期望的,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是一名Java开发人员,对Ruby非常陌生,因此,如果这个问题有点太基本,请对我放轻松。:)我来这里是想知道是否有人能给我指出正确的方向 我正在写一个处理时间的应用程序,需要考虑时区。我很好奇Ruby在处理时区方面提供了什么,我发现Rails提供了一个DateTime类,可以满足我的需要 然而,当我创建DateTime时,它似乎没有我期望的方法。有人能解释一下这是怎么回事吗?以下是我在irb中看到的: >> dt = DateTime.now NameError: uninitia
>> dt = DateTime.now
NameError: uninitialized constant DateTime
from (irb):1
>> require 'rails'
=> true
>> dt = DateTime.now
=> #<DateTime: 212158799144191849/86400000000,-1/4,2299161>
>> dt.respond_to? "in_time_zone"
=> false
dt=DateTime.now
NameError:未初始化的常量DateTime
来自(irb):1
>>需要“rails”
=>正确
>>dt=DateTime.now
=> #
>>你有什么反应?“在时区内”
=>错误
由于DateTime是在我需要rails之前才定义的,所以我假设我使用的是rails DateTime,但它似乎没有我根据文档所期望的方法。是一个核心类,也是它的一部分。如果您在代码中要求“日期”
,则此选项可用;您不必使用Rails来访问它
require 'date'
asdf = DateTime.parse(`date`)
asdf # => #<DateTime: 2010-12-10T21:41:59-07:00 (212158802519/86400,-7/24,2299161)>
asdf.class # => DateTime
asdf.to_s # => "2010-12-10T21:41:59-07:00"
或
Ruby的类对时区也有很好的支持,所以您可能也希望如此。您不需要整个Rails堆栈来支持时区。您可以只安装和使用active\u支持。但你也可以看看gem。对于像我这样的新手来说,这是一个很好的信息。尽管如此,我仍然没有提供链接的Rails文档中提到的in_time_zone方法。我的印象是Rails有一个增强的DateTime类(或者只是增强了现有的DateTime类),对处理时区有更好的支持。我错了吗?Rails增强了标准类。当我需要摆弄时区和偏移量时,我使用时间。那么,Rails在什么时候进行了这些增强呢?即使我使用了时间,我也会遇到同样的问题——Ruby的时间类在处理时区时非常小,我需要Rails的增强功能。“Rails在什么时候进行了这些增强?”?当执行
require
时,我的示例中是否有任何东西阻止Rails添加方法?我在创建DateTime之前需要rails,但它没有任何rails DateTime方法。我开始想知道这里发生了什么。我尝试了需要活动\u支持,它似乎起了作用(需要“活动\u支持”返回true),但DateTime.now仍然没有像在\u时区中那样的额外方法。
require 'active_support/all'
asdf.in_time_zone # => Fri, 10 Dec 2010 21:43:42 -0700
require 'active_support/core_ext'
asdf.in_time_zone # => Fri, 10 Dec 2010 21:59:48 -0700