我有一個時間戳毫秒,與這樣的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。任何人都有提示?
我有一個時間戳毫秒,與這樣的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。任何人都有提示?
如果你已經是一個毫秒值(從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
這就是我需要的。在Java 8中不贊成使用日期,爲什麼這比我的兩行代碼「更好」? – Christian
嗯,它仍然是兩行代碼(實際上我可以做到這一點),但新的時間API更簡單,更強大。而不是有'日期'和'日曆'和周圍的所有有趣的東西。我也是時間分區處理得更好(關於人們對它的理解方面)(哦,'java.util.Date'沒有折舊,但是考慮到新的時間/日期API的功能,它是多餘的) – MadProgrammer
我希望你可以在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);
'Date'在'java 8'中被棄用。 'LocalDate'還有什麼呢? – Satya
@Satya,'Date'沒有在Java-8中聲明爲棄用。 –