2016-12-27 179 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' ... –