Неправильная дата с рубиновым Date.today и DateTime.now

Я установил ruby-1.8.6-p383 с RVM. Системный рубин является 1.9.1_p378-1

Я получаю неправильную дату от Date.today и DateTime.now при использовании рубиновых 1.8.. Принимая во внимание, что Time.now корректен:

irb(main):002:0> DateTime.now.to_s
=> "2126--1-10618T11:23:43+00:00"
irb(main):004:0> Date.today.to_s
=> "2126--1-10618"
irb(main):005:0> Time.now
=> Thu Jan 28 11:55:27 +0000 2010

Все хорошо, если я переключаюсь на рубиновые 1.9:

irb(main):003:0> DateTime.now.to_s
=> "2010-01-28T11:58:51+00:00"
irb(main):004:0> Date.today.to_s
=> "2010-01-28"
irb(main):005:0> Time.now
=> 2010-01-28 11:59:05 +0000

Любой совет относительно того, как заставить DateTime работать правильно в рубиновых 1.8, больше всего ценился бы!

8
задан Rob 28 January 2010 в 12:01
поделиться

3 ответа

Я наткнулся на похожую проблему и получил 3 разных решения, из которых я попробовал два, и оба сработали. Подробнее об этом можно прочитать здесь:

http://www.ruby-forum.com/topic/210647

Jarmo

3
ответ дан 6 December 2019 в 00:57
поделиться

Возвращаемая строка, кажется, очень разбита: i) год - 2126, ii) между годом и месяцем два дефиса, и ii) день - 10618.

На какой платформе вы находитесь? В каком часовом поясе вы находитесь (пример подразумевает, что вы в GMT)?

Я на WinXP и Ruby 1.8.6-p111 дает один и тот же результат во всех трех случаях.

Правка: Я немного покопался в исходном коде Ruby (Date и DateTime определены в lib/date.rb).

Оказывается, что Date.today вызывает внутренние Time.now.__send__(:to_date)... , так что, возможно, вам стоит попробовать вызвать Time.now.__send__(:to_date).to_s в irb и сравнить вывод с Time.now.to_s для того, чтобы сузить проблему.

Date.today также вызывает .new_start(...) на созданный экземпляр Date, так что, возможно, это путает дату в вашем случае.

1
ответ дан 6 December 2019 в 00:57
поделиться

Я не уверен, запускаете ли вы что-то локально или на сервере, но я думаю, что ruby может принимать дату сервера, которая может находиться в другом часовом поясе, чем вы, и, таким образом, выглядеть по-другому.

-1
ответ дан 6 December 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: