Cách tốt nhất để chuyển đổi giữa LocalDate
từ Java 8 và XMLGregorianCalendar
là gì?Chuyển đổi giữa LocalDate và XMLGregorianCalendar
Trả lời
Chuyển đổi từ LocalDate
để XMLGregorianCalendar
:
LocalDate date = LocalDate.now();
GregorianCalendar gcal = GregorianCalendar.from(date.atStartOfDay(ZoneId.systemDefault()));
XMLGregorianCalendar xcal = DatatypeFactory.newInstance().newXMLGregorianCalendar(gcal);
Chuyển đổi trở lại đơn giản hơn:
xcal.toGregorianCalendar().toZonedDateTime().toLocalDate();
Khi chuyển đổi từ LocalDate sang XMLGregorianCalendar, tránh GregorianCalendar! Vấn đề là múi giờ của GregorianCalendar là một trường bắt buộc, nhưng LocalDate không có thông tin múi giờ trong đó! – riskop
Để chuyển đổi từ LocalDate
để XMLGregorianCalendar
bạn có thể sử dụng
LocalDate localDate = ...;
GregorianCalendar calender = new GregorianCalendar();
Date utilDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
calender.setTime(utilDate);
XMLGregorianCalendar xmlCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(calender);
Và để chuyển đổi XMLGregorianCalendar
trở lại LocalDate
:
XMLGregorianCalendar xmlCal = ...;
Date utilDate = xmlCal.toGregorianCalendar().getTime();
LocalDate localDate = LocalDateTime.ofInstant(utilDate.toInstant(), ZoneId.systemDefault()).toLocalDate();
LocalDate chỉ lưu trữ thông tin năm/tháng/ngày. Không có thời gian hay thông tin múi giờ trong đó. Ngày lưu trữ XMLGregorianCalendar (năm/tháng/ngày) + tùy chọn và tùy chọn thông tin múi giờ.
Vì vậy, việc chuyển đổi từ LOCALDATE để XMLGregorianCalendar rất đơn giản:
LocalDate in;
XMLGregorianCalendar out;
in = LocalDate.parse("1999-11-11");
out = DatatypeFactory.newInstance().newXMLGregorianCalendar(in.toString());
Chuyển đổi từ XMLGregorianCalendar để LOCALDATE có thể không đơn giản như vậy, bởi vì XMLGregorianCalendar thể có thời gian và múi giờ thông tin mà bạn chỉ đơn giản là không thể lưu trữ trong LocalDate. Tuy nhiên, tôi đoán rằng nếu bạn đang chuyển đổi từ XMLGregorianCalendar sang LocalDate thì XMLGregorianCalendar là kết quả của một phần tử xsd: date nontimezoned (được biểu diễn là YYYY-MM-DD trong xml). Trong trường hợp đó bạn nên chuyển đổi nó như thế này:
XMLGregorianCalendar in;
LocalDate out;
in = DatatypeFactory.newInstance().newXMLGregorianCalendar("2011-11-11");
out = LocalDate.parse(in.toXMLFormat());
Tổng số ví dụ:
{
LocalDate in;
XMLGregorianCalendar out;
in = LocalDate.parse("1999-11-11");
out = DatatypeFactory.newInstance().newXMLGregorianCalendar(in.toString());
System.out.println("in: " + in.toString());
System.out.println("out: " + out.toXMLFormat());
}
{
XMLGregorianCalendar in;
LocalDate out;
in = DatatypeFactory.newInstance().newXMLGregorianCalendar("2011-11-11");
out = LocalDate.parse(in.toXMLFormat());
System.out.println("in: " + in.toXMLFormat());
System.out.println("out: " + out.toString());
}
- 1. Chuyển đổi đơn giản giữa java.util.Date và XMLGregorianCalendar
- 2. Thay đổi ngày khi chuyển đổi từ XMLGregorianCalendar sang Lịch
- 3. Làm thế nào để chuyển đổi java.time.ZonedDateTime thành XMLGregorianCalendar?
- 4. Chuyển đổi Lịch thành XMLGregorianCalendar với định dạng cụ thể
- 5. Thời gian Joda - Chuyển đổi đối tượng Lịch sang LocalDate
- 6. Làm thế nào để chuyển đổi một LocalDate thành Instant?
- 7. LocalDate từ Tuần và TuầnYăm
- 8. Chuỗi để LocalDate
- 9. Swift chuyển đổi giữa uint và Int
- 10. Chuyển đổi giữa SQL char và C#
- 11. Chuyển đổi giữa Monogame và UIKit
- 12. Chuyển đổi giữa lớp scala và Dynamic
- 13. chuyển đổi XMLGregorianCalendar thành ngày có nghĩa là "MM/DD/YYYY hh: mm: ss AM"
- 14. Cách tốt nhất để chuyển đổi XMLGregorianCalendar thành MM/dd/yyyy hh: mm String là gì?
- 15. convert XMLGregorianCalendar để java.sql.Timestamp
- 16. Làm thế nào để chuyển đổi LocalDate thành SQL ngày Java?
- 17. Thời gian Joda: Làm thế nào để chuyển đổi chuỗi thành LocalDate?
- 18. Làm thế nào để chuyển đổi Joda Localdate thành Joda DateTime?
- 19. Làm thế nào để chuyển đổi java.sql.timestamp thành LocalDate (java8) java.time?
- 20. Java 8 LOCALDATE to Date Javascript
- 21. Chuyển đổi giữa không gian màu RGB và RYB
- 22. Chuyển đổi giữa GCC và Clang/LLVM bằng CMake
- 23. chuyển đổi giữa jquery-1.3.2.js và jquery-1.3.2.min.js
- 24. Log4net - tự động chuyển đổi appender giữa AdoNetAppender và RollingFileAppender
- 25. Giá kiểm soát chuyển đổi giữa C++ và Python
- 26. Lisp thường gặp: chuyển đổi giữa danh sách và mảng
- 27. Chuyển đổi giữa tên tệp URL và cửa sổ (Java)?
- 28. Làm cách nào để chuyển đổi giữa Float và [Word8]?
- 29. Android: chuyển đổi giữa các chuỗi, SpannedStrings và Spannablestrings
- 30. Chuyển đổi giữa EXE độc lập và dịch vụ windows
Nó tương tự như những gì đã được trả lời ở đây http://stackoverflow.com/questions/835889/java-util -date-to-xmlgregoriancalendar? answerertab = votes # tab-top –
@AnkurAnand Tôi không nghĩ rằng câu hỏi này rất giống nhau - tôi cần chuyển đổi từ 'LocalDate', chứ không phải' Date', và tôi đã tìm kiếm một sự hội tụ trong cả hai hướng. Các câu trả lời có thể là tương tự vì chuyển đổi yêu cầu 'Ngày' như là một bước giữa, nhưng câu hỏi là không. – maja