时间戳转时间
时间戳转LocalDateTime
时间戳转LocalDateTime
public static LocalDateTime toLocalDateTime(Long timeMill) {
// 获取系统默认时区
ZoneId zoneId = ZoneId.systemDefault();
return LocalDateTime.ofInstant(Instant.ofEpochMilli(timeMill), zoneId);
}
- Instant是java8中引入的类,表示从1970年1月1日的时间戳(UTC开始时间戳)
- Instant.ofEpochMilli(timeMill)会将以毫秒为单位的时间戳转换为对应的Instant对象。
- LocalDateTime.ofInstant(instant, zoneId):这一行代码将Instant对象转换为LocalDateTime对象。LocalDateTime是表示日期和时间的类,不包含时区信息。ofInstant方法接受一个Instant对象和一个ZoneId对象作为参数,它会根据给定的时区将Instant对象转换为相应的LocalDateTime对象。
最终,整个方法的作用就是将以毫秒为单位的时间戳转换为本地的日期和时间,考虑了系统的默认时区。这种转换在需要处理时间和日期数据时非常有用,尤其是在涉及不同时区的数据处理时。
LocalDateTime转时间戳
public static Long ofTimeMill(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
return localDateTime.atZone(zoneId).toInstant().toEpochMilli();
}
- localDateTime.atZone(zoneId)将LocalDateTime对象附加到指定时区,返回一个ZoneDateTime对象
- ZoneDateTime.toInstant()将ZoneDateTime对象转换为时间戳类,不包含时区
- .toEpochMilli():Instant 对象有一个 .toEpochMilli() 方法,可以将其转换为以毫秒为单位的时间戳。这是从 1970 年 1 月 1 日 UTC(协调世界时)开始的时间戳。
最终,整个方法的作用就是将给定的 LocalDateTime 对象,考虑了系统的默认时区,转换为以毫秒为单位的时间戳。这种转换在需要将本地日期和时间转换为通用的时间戳格式时非常有用。
LocalDateTime获取年月日
public static String timeStampToString(long timeStamp) {
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = Instant.ofEpochMilli(timeStamp);
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy_MM_dd HH:mm:ss");
return localDateTime.format(formatter);
}