2015-09-29 38 views
2

我有一個時間戳毫秒,與這樣的SimpleDateFormater格式化這個:MS轉換成字符串日期與Java 8

SimpleDateFormat sdfDate = new SimpleDateFormat("MM/d/yyyy h:mm a"); 

return sdfDate.format(new Date(timeStamp)); 

現在我想將其更改爲使用新的Java 8的能力。看起來我真的無法找到一種方法來使用新的Java 8 Classes。任何人都有提示?

+0

'Date'在'java 8'中被棄用。 'LocalDate'還有什麼呢? – Satya

+1

@Satya,'Date'沒有在Java-8中聲明爲棄用。 –

回答

6

如果你已經是一個毫秒值(從Unix紀元假設),你可以使用像得到一個LocalDateTime

LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(timeInMillis), ZoneId.systemDefault()); 
System.out.println(ldt); 

一種可以打印類似:

2015-09-29T16:57:40.077 

可以使用這樣的事情然後格式化:

System.out.println(ldt.format(DateTimeFormatter.ofPattern("MM/dd/yyyy h:mm a"))); 

一種可以打印類似(基於前面例子中的原始時間):

09/29/2015 4:57 PM 
+0

這就是我需要的。在Java 8中不贊成使用日期,爲什麼這比我的兩行代碼「更好」? – Christian

+2

嗯,它仍然是兩行代碼(實際上我可以做到這一點),但新的時間API更簡單,更強大。而不是有'日期'和'日曆'和周圍的所有有趣的東西。我也是時間分區處理得更好(關於人們對它的理解方面)(哦,'java.util.Date'沒有折舊,但是考慮到新的時間/日期API的功能,它是多餘的) – MadProgrammer

1

我希望你可以在Java 8試試這個從時間戳獲取日期:

timeStamp.toLocalDateTime().toLocalDate(); 

進行格式化,您可以使用LocalDateTime爲:

String str = "1997-03-18 11:30"; 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); 
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);