Rails DateTime объект не то, что я ожидаю - PullRequest
2 голосов
/ 11 декабря 2010

Я Java-разработчик, который является новичком в Ruby, поэтому, если этот вопрос немного слишком прост, пожалуйста, будьте осторожны со мной. :) Я здесь, чтобы узнать, может ли кто-нибудь указать мне правильное направление.

Я пишу приложение, которое работает со временем и должно учитывать часовые пояса. Мне было любопытно, что Ruby предлагает для работы с часовыми поясами, и я обнаружил, что Rails предоставляет класс DateTime, который должен делать то, что мне нужно. http://api.rubyonrails.org/classes/DateTime.html#method-i-in_time_zone

Однако, когда я создаю 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

Поскольку DateTime не определен до тех пор, пока мне не понадобятся рельсы, я предположил, что использовал Rails DateTime, но, похоже, у него нет ожидаемых методов, основанных на документации.

Ответы [ 2 ]

8 голосов
/ 11 декабря 2010

DateTime является базовым классом и частью Date.Это доступно, если вы require 'date' в своем коде;Вам не нужно использовать 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"

Класс, за которым вы работаете, является частью ActiveSupport, который является частью Rails, но вам не нужно загружать Rails для доступа к нему.:

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

Ruby's Time также имеет хорошую поддержку часовых поясов, так что вы можете ознакомиться с ним тоже.

0 голосов
/ 11 декабря 2010

Вам не нужен весь стек Rails для поддержки часового пояса. Вы можете установить и использовать только active_support. Но вы также можете проверить tzinfo драгоценный камень.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...