2016-02-27 47 views
3

我想將字符串轉換爲使用java 8的字符串轉換爲某種格式。以下是我的代碼。即使提到格式模式爲MM/dd/yyyy,我收到的輸出是yyyy/DD/MM格式。有人能指出我做錯了什麼嗎?使用java8將字符串轉換爲日期

String str = "01/01/2015"; 
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); 
    LocalDate dateTime = LocalDate.parse(str, formatter); 
    System.out.println(dateTime); 
+1

您還需要一個用於輸出的格式化程序,假設您期望以特定格式。 –

+1

'LocalDate'沒有它自己的格式(它的'toString'方法只是提供它所代表的值的有用信息),你需要使用一個不同的格式化程序來將'LocalDate'格式化回''String'以你想要的格式。概念上類似於[this](http://stackoverflow.com/questions/12575990/calendar-date-to-yyyy-mm-dd-format-in-java/12576219#12576219) – MadProgrammer

+0

@MadProgrammer但我的方法是調用這個函數有一個返回類型Date。 – user3509208

回答

1

LocalDate是一個Date對象。它不是一個String對象,所以它將顯示日期輸出字符串的格式將依賴於toString實現。

你已經正確地轉換它LOCALDATE的對象,但如果你想顯示在一個特定的字符串格式的日期對象,需要相應地格式化:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); 
System.out.println(dateTime.format(formatter)) 

這種方式可以日期轉換爲任何字符串通過提供格式化程序您想要的格式。

+0

你會推薦使用別的東西而不是LocalDate,從Java 8來滿足我的需求,因爲我需要將字符串轉換爲日期格式爲mm/dd/yyyy並存儲在我的數據庫中。 – user3509208

+0

no ..你的代碼是正確的,它存儲在分貝。大部分數據庫都支持日期。它們將以毫秒爲單位在內部存儲它。當您進行查詢時,他們會以特定的格式顯示您。這並不意味着日期以該格式存儲。 –

4

那是因爲你正在使用的規定,toString method

輸出將在ISO-8601格式UUUU-MM-DD。

DateTimeFormatter,你傳遞給LocalDate.parse只是用來創建一個LocalDate,但它不是「附加」到創建的實例。您將需要使用LocalDate.format method這樣的:

String str = "01/01/2015"; 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy"); 
LocalDate dateTime = LocalDate.parse(str, formatter); 
System.out.println(dateTime.format(formatter)); // not using toString 
0

可以使用SimpleDateFormat類爲目的。 用您希望作爲參數的日期格式初始化SimpleDateFormat對象。

String dateInString = "27/02/2016" 
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
Date date = formatter.parse(dateInString);