Java 8 LocalDate 从 long 到 date 转换不正确
Java 8 LocalDate from long to date not converted correct
我想将以毫秒为单位的日期转换为日期,但转换不正确。
public static void main(String[] args) {
LocalDate today = LocalDateTime.now().toLocalDate();
System.out.println("Today: ----------" + today);
long todayLong = today.atStartOfDay(ZoneId.systemDefault()).toEpochSecond();
System.out.println("todayLong: ---------- " + todayLong);
LocalDate todayBack = Instant.ofEpochMilli(todayLong).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("todayBack: ---------- "+todayBack);
}
这是输出:
Today: ----------2017-06-27
todayLong: ---------- 1498507200
todayBack: ---------- 1970-01-18
你必须将 todayLong 乘以 1000
LocalDate todayBack = Instant.ofEpochMilli(todayLong * 1000).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("todayBack: ---------- " + todayBack);
获取输出:
Today: ----------2017-06-27
todayLong: ---------- 1498514400
todayBack: ---------- 2017-06-27
您需要使用 ofEpochSecond
而不是 ofEpochMilli
因为您的 todayLong
是 second
,而不是 milisecond
LocalDate todayBack = Instant.ofEpochSecond(todayLong).atZone(ZoneId.systemDefault()).toLocalDate();
你在第6行有一点错误(Instant.ofEpochMilli
)。
使用 Instant.ofEpochSecond
代替:
LocalDate today = LocalDateTime.now().toLocalDate();
System.out.println("Today: ----------" + today);
long todayLong = today.atStartOfDay(ZoneId.systemDefault()).toEpochSecond();
System.out.println("todayLong: ---------- " + todayLong);
LocalDate todayBack = Instant.ofEpochSecond(todayLong).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("todayBack: ---------- " + todayBack);
我想将以毫秒为单位的日期转换为日期,但转换不正确。
public static void main(String[] args) {
LocalDate today = LocalDateTime.now().toLocalDate();
System.out.println("Today: ----------" + today);
long todayLong = today.atStartOfDay(ZoneId.systemDefault()).toEpochSecond();
System.out.println("todayLong: ---------- " + todayLong);
LocalDate todayBack = Instant.ofEpochMilli(todayLong).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("todayBack: ---------- "+todayBack);
}
这是输出:
Today: ----------2017-06-27
todayLong: ---------- 1498507200
todayBack: ---------- 1970-01-18
你必须将 todayLong 乘以 1000
LocalDate todayBack = Instant.ofEpochMilli(todayLong * 1000).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("todayBack: ---------- " + todayBack);
获取输出:
Today: ----------2017-06-27
todayLong: ---------- 1498514400
todayBack: ---------- 2017-06-27
您需要使用 ofEpochSecond
而不是 ofEpochMilli
因为您的 todayLong
是 second
,而不是 milisecond
LocalDate todayBack = Instant.ofEpochSecond(todayLong).atZone(ZoneId.systemDefault()).toLocalDate();
你在第6行有一点错误(Instant.ofEpochMilli
)。
使用 Instant.ofEpochSecond
代替:
LocalDate today = LocalDateTime.now().toLocalDate();
System.out.println("Today: ----------" + today);
long todayLong = today.atStartOfDay(ZoneId.systemDefault()).toEpochSecond();
System.out.println("todayLong: ---------- " + todayLong);
LocalDate todayBack = Instant.ofEpochSecond(todayLong).atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println("todayBack: ---------- " + todayBack);