2016-12-27 171 views
3

今天我時間解析劃時代的字符串,像這樣:只能通過DateTimeFormatter解析LocalDate嗎?

private String convertEpochTime(Long timeInEpoch) { 
    return new SimpleDateFormat("MM/dd/yyyy HH:mm") 
      .format(new java.util.Date (timeInEpoch * 1000)); 
} 

我想用的Java 8LOCALDATE的 API,而不是使用字符串,但沒」找到一種做法。

我希望我只是可以這樣做:

private LocalDate convertEpochTime(Long timeInEpoch) { 
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm").format(new java.util.Date (timeInEpoch * 1000)); 
    return LocalDate.parse(dateTimeFormatter); 
} 

是否有這樣做的方法嗎?

回答

4

您可以使用Instant.ofEpochSecond,然後瞬間轉換爲LocalDate

Instant instant = Instant.ofEpochSecond(timeInEpoch); 
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); 

,或者如果你想有時間爲好,轉換爲LocalDateTime

LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); 

而不是ZoneId.systemDefault()你可能需要根據您的需要使用不同的區域。

所以沒有必要使用字符串作爲中介。

+0

它也可以顯示當前時間嗎? – Nimrod

+1

@Nimrod然後你需要使用'LocalDateTime'而不是'LocalDate' ... –