سؤال

لقد قمت بتثبيت Ruby-1.8.6-P383 مع RVM. نظام Ruby هو 1.9.1_p378-1

أحصل على تاريخ خاطئ من Date.Today و DateTime.now عند استخدام Ruby 1.8 .. في حين أن الوقت. الآن صحيح:

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

جارمو

نصائح أخرى

يبدو أن السلسلة التي تم إرجاعها مكسورة للغاية: 1) العام هو 2126 ، ii) هناك واصلين بين السنة والشهر ، والثاني) في اليوم 10618.

اي الانظمة الاساسية تعتمد؟ ما هي المنطقة الزمنية التي أنت عليها (المثال يعني أنك في GMT)؟

أنا على WinXP و Ruby 1.8.6-P111 يعطي نفس النتيجة في جميع الحالات الثلاث.

تحرير: لقد فعلت بعض الحفر في رمز مصدر روبي (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 مثيل لذلك ربما يكون هذا يفسد التاريخ في قضيتك.

لست متأكدًا مما إذا كنت تقوم بتشغيل الأشياء محليًا ، أو على الخادم ، لكنني أعتقد أن روبي قد يأخذ تاريخ الخادم ، والذي قد يكون في منطقة زمنية مختلفة عما أنت عليه ، وبالتالي ، يظهر بشكل مختلف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top