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

StackOverflow https://stackoverflow.com/questions/2154281

  •  23-09-2019
  •  | 
  •  

Вопрос

Я установил Ruby-1.8.6-p383 с RVM.Система Ruby — 1.9.1_p378-1.

Я получаю неправильную дату из Date.today и DateTime.now при использовании Ruby 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

Все будет хорошо, если я перейду на Ruby 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 правильно работать в Ruby 1.8!

Это было полезно?

Решение

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

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

Ярмо

Другие советы

Возвращенная строка кажется очень сломанной: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 Например, так что, возможно, в вашем случае это испортило дату.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top