2010-03-27 12 views
48

चूंकि जीडब्ल्यूटी ग्रेगोरियन कैलेंडर श्रेणी प्रदान नहीं करता है, क्लाइंट पर कैलेंडर ऑपरेशन कैसे करें?जावा जीडब्ल्यूटी में कैलेंडर ऑपरेशंस कैसे करें? किसी तारीख को दिन कैसे जोड़ें?

मेरे पास दिनांक a है और मुझे दिनांक na के बाद दिनांक चाहिए।

उदाहरण:

a (2000-01-01) + n (1) -> 2000-01-02 
a (2000-01-01) + n (31) -> 2000-02-01 

उत्तर

67

अपडेट किया गया जवाब: इस वर्ग की पूरी तरह से योग्य नाम com.google.gwt.user.datepicker.client.CalendarUtil है।

+0

इस उत्तर के लिए धन्यवाद –

+0

@Chris Lercher द्वारा वैकल्पिक उत्तर यदि आप दिनों के अलावा समय की एक इकाई जोड़ने की जरूरत है (i.e: hours) – cellepo

9

जवाब गूगल (वर्तमान में) का उपयोग करने लगता है वह यह है कि:

@SuppressWarnings("deprecation") // GWT requires Date 
    public static void addDaysToDate(Date date, int days) { 
    date.setDate(date.getDate() + days); 
    } 

इस वर्ग com.google.gwt.user.datepicker.client.CalendarUtil, जो com.google.gwt.user.datepicker.client.DatePicker द्वारा प्रयोग किया जाता है से है। मैं कल्पना करता हूं कि अलग-अलग समय क्षेत्रों में गणना करते समय, इसमें समस्याएं शामिल होंगी।

बहुत से लोगों ने पहले ही जीडब्ल्यूटी के लिए किसी प्रकार के जोडा समय के लिए मतदान किया है: http://code.google.com/p/google-web-toolkit/issues/detail?id=603। वर्तमान में आखिरी टिप्पणी में कहा गया है कि गोडा समय का एक नया कांटा है, शायद हमें इसे वास्तव में देखना चाहिए।

+0

आप समय की अलग-अलग इकाइयों को जोड़ने के लिए तारीख के अन्य सेट विधियों को भी कॉल कर सकते हैं (यानी सेटहोर्स) – cellepo

1

मैंने एक कठिन कार्यान्वयन बनाया है जो टाइमज़ोन, कैलेंडर और लोकेल का अनुकरण करता है। यहाँ इसे आज़माने के लिए स्वतंत्र महसूस:

http://code.google.com/p/gwt-calendar-class/downloads/list

3
private static final long MILLISECONDS_IN_SECOND = 1000l; 
private static final long SECONDS_IN_MINUTE = 60l; 
private static final long MINUTES_IN_HOUR = 60l; 
private static final long HOURS_IN_DAY = 24l; 
private static final long MILLISECONDS_IN_DAY = MILLISECONDS_IN_SECOND * 
     SECONDS_IN_MINUTE * 
     MINUTES_IN_HOUR * 
     HOURS_IN_DAY; 
public Date addDays (Date date, days) 
{ 
return new Date (date.getTime() + (days * MILLISECONDS_IN_DAY)); 
} 

इस लीप वर्ष के साथ काम करेंगे लेकिन अंततः milleniums पर आवारा मिलीसेकेंड से हम जोड़ सकते हैं या छोड़ जब होगा छलांग सेकंड। GWT 2,1

final Date dueDate = new Date(); 
CalendarUtil.addDaysToDate(dueDate, 21); 

संपादित करें के लिए

+5

+1, लेकिन कृपया ध्यान दें: यह आप जो हासिल करना चाहते हैं उस पर बहुत निर्भर करता है। आमतौर पर, "2011-03-22 10:00:00 सीईटी" में 7 दिन जोड़ना चाहिए "2011-03-29 10:00:00 सीईटी" (यानी स्थानीय समय 10 बजे रहना चाहिए)। लेकिन क्योंकि सीईटी में, दो तिथियों के बीच एक घड़ी परिवर्तन (डीएसटी) होता है, मिलीसेकंड गणना एक अलग परिणाम उत्पन्न करेगी। फिर, यह इस बात पर निर्भर करता है कि आप किस तरह की गणना चाहते हैं! –

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