Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails DateTime对象不是';这不是我所期望的_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails DateTime对象不是';这不是我所期望的

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

我是一名Java开发人员,对Ruby非常陌生,因此,如果这个问题有点太基本,请对我放轻松。:)我来这里是想知道是否有人能给我指出正确的方向

我正在写一个处理时间的应用程序,需要考虑时区。我很好奇Ruby在处理时区方面提供了什么,我发现Rails提供了一个DateTime类,可以满足我的需要

然而,当我创建DateTime时,它似乎没有我期望的方法。有人能解释一下这是怎么回事吗?以下是我在irb中看到的:

>> 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