2010-02-03 8 views
6

मैं एक (java.util।) दिनांक क्लाइंट-साइड प्रदर्शित करने की कोशिश कर रहा हूं, और यह ब्राउज़र के टाइमज़ोन का उपयोग करता रहता है, जिसके परिणामस्वरूप आप पृष्ठ को कहां देखते हैं इसके आधार पर एक अलग तिथि दिखाई देती है।क्लाइंट के बजाए सर्वर टाइमज़ोन का उपयोग करके प्रदर्शित करने के लिए मुझे GWT DateTimeFormat कैसे प्राप्त किया जा सकता है?

मैं उपयोगकर्ता के बजाए सर्वर के टाइमज़ोन का उपयोग कर दिनांक प्रदर्शित करने के लिए फॉर्मेटर (डेटटाइमफॉर्मैट) कैसे प्राप्त करूं?

धन्यवाद

उत्तर

3

"सबसे आसान" समाधान (एक है कि सर्वर के साथ किसी भी संचार की आवश्यकता नहीं है) सिर्फ एक विशेष समय क्षेत्र (एक अपने सर्वर में है) का उपयोग करने DateTimeFormat मजबूर कर रहा है, इस तरह:

String pseudoServerTime = DateTimeFormat.getFullTimeFormat().format(new Date(), TimeZone.createTimeZone(TimeZoneConstants.europeWarsaw()); 

आप कहीं समयक्षेत्र स्ट्रिंग/वस्तु को हार्डकोड कर सकते हैं public static final के रूप में इतना है कि यह आसानी से बदला जा सकता है, अगर आप/परिवर्तन सर्वर के लिए कदम (और GWT संकलक इस इनलाइन जाएगा, ताकि कोई प्रदर्शन दंड)।

+0

धन्यवाद इग्रो - यह मेरा पहला अनुमान था, हालांकि मैंने टाइमज़ोन ऑफ़सेट को हार्डकोड किया था। हार्डकोडेड ऑफ़सेट का उपयोग करने में मेरी समस्या यह है कि हम वर्तमान में डेलाइट बचत समय (सिडनी, ऑस्ट्रेलिया) में हैं और जब यह समाप्त होता है तो समय फिर से बाहर हो जाएगा। – RodeoClown

+1

ऑफ़सेट हार्डकोड न करें। टाइमज़ोन ऑब्जेक्ट हार्डकोड और डेलाइट बचत को ध्यान में रखा जाएगा। –

1

क्या ग्राहक को तारीख में संशोधित किया जाएगा? यदि सर्वर पर प्रारूप नहीं है और बस एक स्ट्रिंग मान भेजें। एक अंतिम बात। जीडब्ल्यूटी में ग्राहक पक्ष पर तिथियों के साथ कुछ समस्याएं प्रतीत होती हैं। http://blog.gerardin.info/archives/674

+0

हाय कार्नेल, तिथि क्लाइंट पर संशोधित नहीं की जाएगी, लेकिन इसे सॉर्ट करने के लिए तालिका में उपयोग किया जाता है, और इसे "31 जनवरी 2010" के रूप में स्वरूपित किया जा रहा है, इसलिए इसे एक स्ट्रिंग सर्वर-साइड बनाने से सॉर्टिंग को रोक दिया जाएगा काम कर रहे। अब लिंक को चेक आउट करना। धन्यवाद – RodeoClown

+0

आप तिथि को स्ट्रिंग के रूप में प्रदर्शित कर सकते हैं और सॉर्टिंग के लिए उपयोग करने के लिए तिथि के संख्यात्मक मूल्य को भी पास कर सकते हैं। तिथि के लिए लंबा मूल्य प्राप्त करने के लिए Date.getTime() का उपयोग करें। इस बारे में बेकार एकमात्र चीज यह है कि आपको क्लाइंट को एक और फ़ील्ड पास करना होगा लेकिन इसे काम करना चाहिए। – Carnell

+0

क्या आप लोकेल सेट के साथ सर्वर से स्ट्रिंग को पास नहीं कर सकते (जावा के सिंपलडेटफॉर्मैट का उपयोग करके), उदाहरण के लिए: yyyy-MM-dd hh: mm z, और क्लाइंट पर इस प्रारूप का उपयोग करके, GWT के डेटटाइमफॉर्मेटर का उपयोग करके एक तिथि बनाना । आप सर्वर से टाइमज़ोन के साथ एक तिथि बना रहे होंगे, और अन्य उद्देश्यों के लिए इसका उपयोग भी कर सकते हैं। –