[英]Convert dateTime to date in dd/MM/yy format in java
我有一個JODA DateTime
2012-12-31T13:32:56.483+13:00
。 我想以dd/MM/yy
格式將其轉換為Date。 所以我期待代碼返回日期,如 - 2012年12月31日。
代碼 -
// Input dateTime = 2012-12-31T13:32:56.483+13:00
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
Date date = simpleDateFormat.parse(dateTime.toString("dd/MM/yy"));
結果:
Output - Mon Dec 31 00:00:00 NZDT 2012
Expected Output - 31/12/12
當我執行以下操作時,我得到了預期的輸出,但我不知道如何將其轉換為Date-
String string = simpleDateFormat.format(date);
請幫我。
謝謝
編輯 - 我希望我的最終結果是以dd / MM / yy格式的Util Date。 我不想要String輸出。 我的輸入是Joda DateTime yyyy-MM-ddThh:mm:ss:+ GMT。 我需要將JodaDateTime轉換為UtilDate。
正如我原先所說,Date對象沒有固有的格式。 java.util.Date
包含一個毫秒時間值,表示日期和時間。 日期通過您選擇的DateFormat從字符串解析或格式化為字符串。
字符串可以按照規范進行格式化,但它們后面的Date對象始終是完全精確的,並且沒有任何固有的格式概念。
要將組合的“日期和時間” java.util.Date
截斷為日期組件,請在午夜時將其有效地保留:
public static Date truncateTime (Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime( date);
cal.set( Calendar.HOUR_OF_DAY, 0);
cal.set( Calendar.MINUTE, 0);
cal.set( Calendar.SECOND, 0);
cal.set( Calendar.MILLISECOND, 0);
return cal.getTime();
}
如果你來自JodaTime DateTime
,你可以更容易地在JodaTime API中工作。
public static Date truncateJodaDT (DateTime dt) {
java.util.Date result = dt.toDateMidnight().toDate();
return result;
}
希望這可以幫助!
看到:
現在我再次不確定,你想要什么。 您現在想要字符串格式的日期嗎?
return simpleDateFormat.format( date); // from java.util.Date
或者使用JodaTime:
return dateTime.toString( "dd/MM/yy"); // from org.joda.time.DateTime
這是你如何做到的
Format formatter = new SimpleDateFormat("dd/MM/yy");
String string = formatter.format(date);
OffsetDateTime.parse( "2012-12-31T13:32:56.483+13:00" ).toLocalDate()
現在處於維護模式的Joda-Time項目建議遷移到java.time類。
您的輸入字符串采用標准ISO 8601格式。
默認情況下,java.time類使用標准格式,因此無需指定格式設置模式。
正如接受的答案所解釋的那樣,您不應該將日期時間對象與可能在文本上表示其值的字符串混淆。 java.util.Date
對象沒有格式,因為它沒有文本 。 同樣適用於java.time類。 您可以使用java.time對象來解析字符串或生成字符串,但該對象是不同的並且與字符串分開。
OffsetDateTime
將輸入字符串解析為OffsetDateTime
因為它包含與UTC的偏移量,但它缺少時區。
OffsetDateTime odt = OffsetDateTime.parse( "2012-12-31T13:32:56.483+13:00" );
LocalDate
如果您想要一個僅限日期的值,請使用LocalDate
類。 請記住,對於任何給定的時刻,日期在全球范圍內按時區變化。 午夜過后一分鍾是在巴黎新的一天,而在魁北克蒙特利爾仍然是“昨天”。 如果您希望日期來自同一偏移量+13:00
,則只需調用toLocalDate
。
LocalDate localDate = odt.toLocalDate();
問題說你不想要一個字符串,只需要一個日期對象。 你去吧 如果您以后想要一個字符串,請調用toString
以生成標准ISO 8601格式的字符串, 2012-12-31
。 對於其他格式,請搜索DateTimeFormatter
Stack Overflow。
java.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊遺留日期時間類,如java.util.Date
, Calendar
和SimpleDateFormat
。
現在處於維護模式的Joda-Time項目建議遷移到java.time類。
要了解更多信息,請參閱Oracle教程 。 並搜索Stack Overflow以獲取許多示例和解釋。 規范是JSR 310 。
從哪里獲取java.time類?
ThreeTen-Extra項目使用其他類擴展了java.time。 該項目是未來可能添加到java.time的試驗場。 您可以在這里找到一些有用的類,比如Interval
, YearWeek
, YearQuarter
,和更多 。
使用Java 8提供的日期時間類
LocalDate parsedDate = LocalDate.parse(dateStr,DateTimeFormatter.ISO_ZONED_DATE_TIME);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.