2010-01-28 14 views
7

के साथ गलत तिथि मैंने RVM के साथ ruby-1.8.6-p383 स्थापित किया है। सिस्टम माणिक 1.9.1_p378-1ruby ​​date.today और DateTime.now

मैं 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 

कैसे दिनांक समय रूबी 1.8 में ठीक से काम करने के लिए पर कोई सलाह सबसे की सराहना की होगी!

+0

मैं रूबी 1.8.7, जो सही दिनांक लौटा रहा है स्थापित किया है। – Rob

+0

मेरे लिए ठीक काम करता प्रतीत होता है 1.8.6 p287 आपके लिए 1.8.6 आवश्यकता का उपयोग कर रहा है? – Beanish

+0

मुझे 1.8.6 की आवश्यकता नहीं है, यह 1.8.7 के साथ काम कर रहा है .. इसलिए मुझे इसे हल करने की आवश्यकता नहीं है .. यह बहुत अजीब है! मैंने केवल 1.8.6 इंस्टॉल किया है, क्योंकि आरवीएम "आरवीएम इंस्टॉल 1.8" – Rob

उत्तर

3

मैं इसी तरह की समस्या पर ठोकर खाई और 3 अलग-अलग समाधान प्राप्त किए, जिनकी मैंने कोशिश की और दोनों ने काम किया। यहां से इसके बारे में और अधिक पढ़ें:

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

Jarmo

+0

हां, मुझे लगता है कि मेरी समस्या यह थी कि जीसीसी 4.4 के साथ संकलन के कारण था। – Rob

1

लौटे स्ट्रिंग बहुत टूट करने के लिए किया जा रहा है: i) वर्ष 2126 है, ii) वहाँ वर्ष और माह के बीच दो हाइफ़न है, और ii) दिन 10618.

है क्या मंच आप पर कर रहे हैं? आप किस समय पर हैं (उदाहरण का तात्पर्य है कि आप जीएमटी में हैं)?

मैं विनएक्सपी और रूबी पर हूं 1.8.6-पी 111 सभी तीन मामलों में एक ही परिणाम देता है।

संपादित करें: मैंने रूबी स्रोत कोड (Date और DateTime में lib/date.rb में परिभाषित किया गया है) में कुछ खुदाई की है।

ऐसा लगता है कि Date.today कॉल आंतरिक रूप से Time.now.__send__(:to_date)..., तो हो सकता है आप irb में Time.now.__send__(:to_date).to_s बुला कोशिश करते हैं और आदेश समस्या को कम करने के लिए Time.now.to_s के उत्पादन की तुलना करनी चाहिए।

Date.todayDate उदाहरण पर .new_start(...) पर भी कॉल करता है, तो हो सकता है कि यह आपके मामले में तिथि को गड़बड़ कर रहा हो।

+0

कर रहा है जब मैं linux x86_64 पर उपयोग कर रहा हूं .. मैं जीएमटी में हूं। – Rob

-1

मुझे यकीन नहीं है कि आप स्थानीय रूप से या सर्वर पर चल रहे हैं, लेकिन मुझे लगता है कि रूबी सर्वर की तारीख ले रही है, जो आपके अलग-अलग समय क्षेत्र में हो सकती है, और इस प्रकार, अलग-अलग दिखाई दे सकती है।