2 回答

TA貢獻1818條經(jīng)驗 獲得超8個贊
你可以試試這個:
Calendar createDate = Calendar.getInstance();
Date cDate = createDate.getTime();
GregorianCalendar c = new GregorianCalendar();
c.setTime(cDate);
XMLGregorianCalendar date2 = DatatypeFactory.newInstance().newXMLGregorianCalendar(c);

TA貢獻1784條經(jīng)驗 獲得超9個贊
博士
DatatypeFactory.newInstance().newXMLGregorianCalendar(
GregorianCalendar.from(
ZonedDateTime.now(
ZoneId.of( "Pacific/Auckland" )
)
)
)
一個時刻需要一個時區(qū)
XML 公歷日歷
類、公歷日歷類
和日歷
類都表示一個時刻,即日期、一天中的時間和分配的時區(qū)。注意時區(qū)問題。如果無法顯式解決區(qū)域問題,那么將隱式分配 JVM 的當(dāng)前缺省時區(qū)。
以 的格式指定正確的時區(qū)名稱,如 、 或 。切勿使用2-4個字母的縮寫,例如或因為它們不是真正的時區(qū),不標(biāo)準(zhǔn)化,甚至不是唯一的(?。?。Continent/Region
America/Edmonton
Africa/Tunis
Europe/Moscow
EST
IST
ZoneId z = ZoneId.of( "America/Montreal" ) ;
如果要使用 JVM 的當(dāng)前默認(rèn)時區(qū),請請求它并作為參數(shù)傳遞。如果省略,代碼將變得模棱兩可,因為我們不確定您是否打算使用默認(rèn)值,或者您是否像許多程序員一樣沒有意識到這個問題。
ZoneId z = ZoneId.systemDefault() ; // Get JVM’s current default time zone.
時間
這些課程也很糟糕。Sun、甲骨文和 JCP 社區(qū)多年前就放棄了它們,采用了 JSR 310...你也應(yīng)該這樣做。僅將 java.time 類用于業(yè)務(wù)邏輯。…Calendar
ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ; // Capture the current moment as seen through the wall-clock time used by the people of a particular region (a time zone).
轉(zhuǎn)換
如果與尚未更新到 java.time 的舊代碼進行交互,請在舊類和新式類之間進行轉(zhuǎn)換。查看添加到舊類中的新方法。
對象可以通過調(diào)用公歷日歷(區(qū)域日期時間)
轉(zhuǎn)換為對象(的子類)。ZonedDateTime
GregorianCalendar
Calendar
GregorianCalendar gregCal = GregorianCalendar.from( zdt ) ;
A 可以轉(zhuǎn)換為 a ,但我們必須多做一個步驟。該類本身缺少 來自 的轉(zhuǎn)換器方法。一個幫助器類可以完成工作,數(shù)據(jù)類型工廠
,如斯蒂芬·科爾伯恩的這個答案所示,“JodaStephen”,java.time的發(fā)明者。GregorianCalendar
XMLGregorianCalendar
XMLGregorianCalendar
GregorianCalendar
XMLGregorianCalendar xmlGregCal = DatatypeFactory.newInstance().newXMLGregorianCalendar( gregCal );
不是我推薦它,但你可以把它組合成一個單行,如頂部的tl;dr部分所示。
添加回答
舉報