2010-01-20 12 views
8

जीडब्ल्यूटी जावा तिथि को व्यवस्थित नहीं करता है। जब मैंने तार के माध्यम से जावास्क्रिप्ट में बनाई गई तारीख भेजने की कोशिश की, तो मुझे पता चला कि वर्ष 1 9 83 से पहले साल के लिए 1 अप्रैल (मजाकिया) और 25 अक्टूबर के बीच की तारीखें एक दिन तक घट जाती हैं।जीडब्ल्यूटी java.util.Date serialization बग

इसका मतलब है कि, 1982-04-01 और 1982-03-31 दोनों जावा पक्ष पर 1982-03-31 बन गए।

प्रश्नों की तारीखों को देखते हुए, मुझे लगता है कि यह किसी प्रकार की डीएसटी समस्या है। मैंने googling की कोशिश की है, और केवल one other reference पाया जो समान समस्या का वर्णन करता है।

मैंने जीडब्ल्यूटी टीम को बग सबमिट करने का भी प्रयास किया, लेकिन जिज्ञासा से जीडब्ल्यूटी के लिए बगट्रैक नहीं मिला।

तो, मेरे सवाल कर रहे हैं:

  1. किसी को भी किसी और रन इस में? मैं जीडब्ल्यूटी 1.7 पर हूं, और यह पुष्टि करना चाहता हूं कि यह 2.0 पर भी होता है या नहीं।

  2. मेरा कामकाज स्ट्रिंग्स के रूप में तिथियां भेजना था, और उन्हें सर्वर पर पार्स करना था। कोई भी बेहतर कामकाज जानता है?

+1

हम अन्य तारीख से संबंधित समस्याओं में भाग गए हैं (अब और नहीं जानते कि वे क्या थे) इसलिए हमने स्ट्रिंग्स पर स्विच किया। – Drejc

उत्तर

5

यह मानते हुए कि आप एक java.util.Date

उपयोग कर रहे हैं प्रश्न 1: ऐसा लगता है कि यह 2.0 में तय हो गई है। मैंने उपरोक्त दोनों तिथियां बनाई हैं (1 9 82-04-01 और 1 9 82-03-31) और वे सर्वर पर सही तरीके से आते हैं (दोनों क्रमशः 1982-04-01 और 1982-03-31 के रूप में सर्वर पर प्रतिनिधित्व करते हैं)। मेरे सेटअप है: जावा 1.6

  • OSX
    • GWT 2.0
    • 10.6.2

    प्रश्न 2: आप हमेशा 1 जनवरी, 1970, 00:00:00 GMT के बाद से 'मिलीसेकेंड गुजारें सकता 'एसिंक सेवा पर- जिसे आप डेट ऑब्जेक्ट पर getTime() का उपयोग कर प्राप्त कर सकते हैं। सर्वर पक्ष पर आप इस मूल्य को कन्स्ट्रक्टर पर पास करने वाली एक नई तिथि को तत्काल कर सकते हैं:
    Date date = new Date(millis);
    यह फ़ॉर्मेटर्स और पार्सर्स के साथ झुकाव बचाता है।

  • +1

    असल में जीडब्ल्यूटी पहले से ही मिलीसेकंड का उपयोग कर क्रमबद्ध है, लेकिन यह टाइमज़ोन छोड़ देता है। इसलिए ब्राउज़र में "3. अप्रैल 2001 00:00 जीएमटी" सर्वर पर "2. अप्रैल 2001 23:00 सीईटी" बन सकता है। और यदि आप केवल उस तारीख को देखते हैं जो ऐसा लगता है कि वास्तविक दिन का मतलब है, भले ही वास्तविक समय का मतलब हो। – Stroboskop

    0

    हमने भी इसी तरह की समस्या में भाग लिया है। यह काफी समय पहले था कि मुझे सटीक विवरण याद नहीं हैं, लेकिन इसके बारे में जानकारी java.util.Date और जावास्क्रिप्ट में जिस तरह से तारीखों को संभाला गया था, के बीच कुछ मामूली अंतर थे। हमारा कामकाज प्रभावी रूप से आपके जैसा ही था, जहां तार पर भेजा गया वास्तविक मूल्य आमतौर पर एक स्ट्रिंग था।

    1

    यदि आपको क्लाइंट-साइड रूपांतरण (उपयोगकर्ता के टाइमज़ोन के अनुकूल) या गणनाओं को सर्वर से स्ट्रिंग में भेजने की आवश्यकता नहीं है।

    हालांकि आपकी विशिष्ट समस्या कभी नहीं मिली।

    2

    तिथियां और समय एक जटिल विषय हैं। रूपांतरण लोकेल पर निर्भर हो सकता है कि ब्राउज़र सर्वर पर JVM दोनों में चल रहा है और गीला है और ग्राहकों के स्थान अद्यतित हैं।

    कुछ मामलों में अंतर हो सकते हैं क्योंकि कुछ क्षेत्रों में उन्होंने अतीत में टाइमज़ोन को स्विच किया था।

    जीडब्ल्यूटी युग के समय से केवल मिलिस का उपयोग करके तिथियां भेजता है।चूंकि यह दिनांक ऑब्जेक्ट्स का उपयोग कर रहा है, इसलिए आप सीमित हैं कि सर्वर पक्ष की तिथियां स्वचालित रूप से सर्वर टाइमज़ोन में संशोधित की जाएंगी। क्या आप सुनिश्चित हैं कि आप क्लाइंट और सर्वर के बीच टाइमज़ोन में संभावित अंतर को ध्यान में रखते हैं?

    डेविड

    +0

    मेरे मामले में, सर्वर और क्लाइंट दोनों एक ही मशीन पर चल रहे थे, इसलिए यह निश्चित रूप से जीडब्ल्यूटी सीरियलाइज़ेशन समस्या है। – Domchi

    +0

    वे शायद एक ही समय में अब हो सकता है। लेकिन तारीखों को देखते हुए, मुझे लगता है कि आपने अभी डेलाइट बचत समय की खोज की है। और मशीनों/सेवाओं में से एक समय को क्रमबद्ध करते समय उस खाते में नहीं लेता है। और इसके बावजूद - मुझे नहीं लगता कि आप एक webservice करना चाहते हैं जो ब्राउज़र के टाइमज़ोन पर सर्वर के समान ही निर्भर करता है। – Stroboskop

    1

    संभव समस्याओं soure क्लाइंट/सर्वर समय क्षेत्र में अंतर है।

    +0

    डेविड, क्लाइंट और सर्वर के प्रति मेरी प्रतिक्रिया देखें एक ही समय क्षेत्र में हैं। मेरा मानना ​​है कि समस्या यह है कि जावास्क्रिप्ट और जावा हैंडल अलग-अलग तारीखें हैं, इसलिए मिलीसेकंड भेजना पर्याप्त नहीं है। – Domchi

    संबंधित मुद्दे