क्या java.util से प्राप्त करने का कोई सुविधाजनक तरीका नहीं है। किसी XMLGregorian कैलेंडर में डेट करें?java.util। XMLGregorianCalendar पर जाएं
उत्तर
GregorianCalendar c = new GregorianCalendar();
c.setTime(yourDate);
XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);
यहाँ XMLGregorianCalendar करने के लिए एक ग्रेगोरी कैलेंडर से परिवर्तित करने के लिए एक विधि है;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class DateTest {
public static void main(final String[] args) throws Exception {
GregorianCalendar gcal = new GregorianCalendar();
XMLGregorianCalendar xgcal = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(gcal);
System.out.println(xgcal);
}
}
संपादित करें: मैं तुम्हारे लिए एक व्यायाम के रूप ग्रेगोरी कैलेंडर के लिए एक java.util.Date से परिवर्तित का हिस्सा छोड़ देंगे slooow :-)
ग्रेगोरियन कैलेंडर को XMLGregorian कैलेंडर में कनवर्ट करने का यह समाधान और .getInstance() का उपयोग करने के लिए – ftrujillo
मुझे आशा है कि मेरी एन्कोडिंग यहाँ सही है, डी बनाने के लिए यह तेजी से बस ग्रेगोरी कैलेंडर की बदसूरत getInstance() कॉल निर्माता कॉल के बजाय का उपयोग करें:
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
public class DateTest {
public static void main(final String[] args) throws Exception {
// do not forget the type cast :/
GregorianCalendar gcal = (GregorianCalendar) GregorianCalendar.getInstance();
XMLGregorianCalendar xgcal = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(gcal);
System.out.println(xgcal);
}
}
-1 प्रश्न में इंगित नहीं किया गया है। 'ग्रेगोरियन कैलेंडर .getInstance()' 'calendar.getInstance()' के बराबर है। 'Calendar.getInstance()' इसे तेज़ी से नहीं बना सकता है, क्योंकि यह उसी 'नए ग्रेगोरियन कैलेंडर()' का उपयोग करता है, लेकिन इससे पहले कि यह डिफ़ॉल्ट लोकेल भी जांचता है और इसके बजाय जापानी या बुश कैलेंडर बना सकता है, इसलिए कुछ भाग्यशाली उपयोगकर्ताओं के लिए यह होगा 'ClassCastException'! – kan
उन है कि यहाँ खत्म हो सकता है विपरीत रूपांतरण (XMLGregorianCalendar
से Date
करने के लिए) की तलाश में के लिए:
XMLGregorianCalendar xcal = <assume this is initialized>;
java.util.Date dt = xcal.toGregorianCalendar().getTime();
बस मैं नीचे मेरी समाधान जोड़ना होगा, के बाद से उत्तर ऊपर मेरी सटीक आवश्यकताओं को पूरा नहीं किया सोचा। मेरी एक्सएमएल स्कीमा को अलग-अलग दिनांक और समय तत्वों की आवश्यकता होती है, गायक डेटटाइम फ़ील्ड नहीं। मानक XMLGregorianCalendar निर्माता ऊपर उपयोग दिनांक समय क्षेत्र उत्पन्न होगा वहाँ
नोट gothca इस तरह के महीने के लिए एक जोड़ने के लिए (के बाद से जावा 0 से महीने में गिना जाता है) होने के रूप में की, के एक जोड़े।
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(yourDate);
XMLGregorianCalendar xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendarDate(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH)+1, cal.get(Calendar.DAY_OF_MONTH), 0);
XMLGregorianCalendar xmlTime = DatatypeFactory.newInstance().newXMLGregorianCalendarTime(cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND), 0);
मान लिया जाये कि आप डिकोड कर रही हैं या एक्सएमएल एन्कोडिंग और JAXB
का उपयोग कर, तो यह पूरी तरह से बाध्यकारी dateTime की जगह और स्कीमा में हर तिथि के लिए `XMLGregorianCalendar 'की तुलना में कुछ और उपयोग करने के लिए संभव है।
इस तरह से आप JAXB
दोहरा सकते हैं जब आप मूल्य प्रदान करने वाले भयानक कोड लिखने पर समय व्यतीत कर सकते हैं।
<jxb:globalBindings>
<jxb:javaType name="org.joda.time.LocalDateTime" xmlType="xs:dateTime"
parseMethod="test.util.JaxbConverter.parseDateTime"
printMethod="se.seb.bis.test.util.JaxbConverter.printDateTime" />
<jxb:javaType name="org.joda.time.LocalDate" xmlType="xs:date"
parseMethod="test.util.JaxbConverter.parseDate"
printMethod="test.util.JaxbConverter.printDate" />
<jxb:javaType name="org.joda.time.LocalTime" xmlType="xs:time"
parseMethod="test.util.JaxbConverter.parseTime"
printMethod="test.util.JaxbConverter.printTime" />
<jxb:serializable uid="2" />
</jxb:globalBindings>
- (। लेकिन कुछ सीमाओं के साथ मैं jodatime पसंद करते हैं और यह मेरे कोड से कॉपी किया है तो मैं यह काम करता है पता है ... java.util.Date साथ ऐसा होता भी काम करते हैं): एक jodatime
DateTime
के लिए
उदाहरण
और कनवर्टर:
public class JaxbConverter {
static final DateTimeFormatter dtf = ISODateTimeFormat.dateTimeNoMillis();
static final DateTimeFormatter df = ISODateTimeFormat.date();
static final DateTimeFormatter tf = ISODateTimeFormat.time();
public static LocalDateTime parseDateTime(String s) {
try {
if (StringUtils.trimToEmpty(s).isEmpty())
return null;
LocalDateTime r = dtf.parseLocalDateTime(s);
return r;
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public static String printDateTime(LocalDateTime d) {
try {
if (d == null)
return null;
return dtf.print(d);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public static LocalDate parseDate(String s) {
try {
if (StringUtils.trimToEmpty(s).isEmpty())
return null;
return df.parseLocalDate(s);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public static String printDate(LocalDate d) {
try {
if (d == null)
return null;
return df.print(d);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public static String printTime(LocalTime d) {
try {
if (d == null)
return null;
return tf.print(d);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
public static LocalTime parseTime(String s) {
try {
if (StringUtils.trimToEmpty(s).isEmpty())
return null;
return df.parseLocalTime(s);
} catch (Exception e) {
throw new IllegalArgumentException(e);
}
}
यहाँ देखें: how replace XmlGregorianCalendar by Date?
तुम सिर्फ मैप करने के लिए खुश हैं, तो टाइमज़ोन + टाइमस्टैम्प के आधार पर एक पल के लिए, और मूल टाइमज़ोन वास्तव में प्रासंगिक नहीं है, तो java.util.Date
शायद ठीक है।
एक एक लाइन उदाहरण Joda-Time लाइब्रेरी का उपयोग: the accepted answer में अपनी टिप्पणी से Nicolas Mommaerts को
XMLGregorianCalendar xgc = DatatypeFactory.newInstance().newXMLGregorianCalendar(new DateTime().toGregorianCalendar());
क्रेडिट।इस कोड को बाहर
चेक: -
/* Create Date Object */
Date date = new Date();
XMLGregorianCalendar xmlDate = null;
GregorianCalendar gc = new GregorianCalendar();
gc.setTime(date);
try{
xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
}
catch(Exception e){
e.printStackTrace();
}
System.out.println("XMLGregorianCalendar :- " + xmlDate);
आप पूर्ण उदाहरण here
मुझे नहीं लगता कि यह उत्तर कुछ नया नहीं प्रदान करता है .. शायद आप लगभग एक ही पोस्ट करने के बजाय पिछले उत्तर को संपादित कर सकते हैं। – winter
- 1. UITableView सेल पर जाएं
- 2. जावास्क्रिप्ट - एंकर पर जाएं
- 3. विम: बफर पर जाएं?
- 4. नोटपैड ++ परिभाषा पर जाएं
- 5. आईफोन पर जाएं
- 6. विधि घोषणा पर जाएं
- 7. java.util पैकेज - कक्षा बनाम इंटरफेस
- 8. x86 एक पते पर जाएं
- 9. jQuery.draggable() - बटन पर वापस जाएं
- 10. रीडलाइन पर जाएं -> स्ट्रिंग
- 11. पिछले पृष्ठ पर वापस जाएं
- 12. परिभाषा पर जाएं gedit प्लगइन
- 13. एंड्रॉइड - सेटिंग स्क्रीन पर जाएं
- 14. मोंगोस - अगले तत्व पर जाएं
- 15. पिछला पृष्ठ पर वापस जाएं
- 16. विम - पिछले स्थान पर जाएं
- 17. ग्रहण "परिभाषा पर जाएं" समस्या
- 18. AVQueuePlayer पर पिछला AVPlayerItem पर जाएं/कतार
- 19. पथ पर जाएं और फिर टैर करें?
- 20. jQuery के बिना स्क्रॉल/आईडी पर जाएं
- 21. क्या एक्सकोड में [फ़ाइल पर जाएं ...] है?
- 22. सीधे किसी अन्य सी ++ फ़ंक्शन पर जाएं
- 23. स्क्रीन को कुछ स्थिति पर ले जाएं
- 24. गिट: पिछली प्रतिबद्ध स्थिति पर वापस जाएं
- 25. HTTP पोस्ट पर जाएं और कुकीज़
- 26. ब्राउज़र पेज के शीर्ष पर कैसे जाएं
- 27. गिट: पिछले और अगले प्रतिबद्धता पर जाएं
- 28. परिभाषा पर जाएं विफल - विजुअल स्टूडियो 2008
- 29. पाइथन 3 पर जाएं - सर्वोत्तम प्रथाओं
- 30. java.util. उचित डेटा संरचना स्टैक करें?
यह getInstance() कुछ कनवर्टर कक्षा में एक स्थिर चर के रूप में रखने के लिए बचाने के लिए है देख सकते हैं? मैंने जावाडॉक में इसे देखने की कोशिश की लेकिन कुछ भी नहीं मिला। किंडा को यह जानना मुश्किल है कि समवर्ती उपयोग में समस्याएं होंगी? – Martin
आप उपयोग करना JodaTime आप एक पंक्ति में ऐसा कर सकते हैं तैयार हैं, तो:।। DatatypeFactory.newInstance() newXMLGregorianCalendar (। नई दिनांक समय() toGregorianCalendar()) –
XMLGregorianCalendar DATE2 = DatatypeFactory.newInstance() newXMLGregorianCalendar (नई ग्रेगोरी कैलेंडर (YYYY, एमएम, डीडी)); –