本文主要是介绍Date、LocalDateTime、时间戳、日期字符串互转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
由于历史原因,项目上使用Date、LocalDateTime、时间戳甚至日期字符串的情况五花八门,在每次参数传递的时候,遇到类型不一致的时候就会很痛苦,接下来就总结下这些类之间到底怎样互转。
1 From Date
Date作为老牌的日期处理类,用到它的地方一定很多,首先针对Date做下总结:
1.1 dateToString
// 经典的SimpleDateFormat,注意SimpleDateFormat是非线程安全的,所以每次使用都要new一个对象
public static String dateToString(Date date) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");return sdf.format(date);
}
1.2 dateToTimestamp
// Date转毫秒时间戳
public static long dateToMilliSeconds(Date date) {return date.getTime();
}// Date转秒时间戳
public static long dateToSeconds(Date date) {return date.getTime() / 1000;
}// Date转纳秒时间戳, 由于Date只精确到毫秒级,所以直接乘以6个0即可
public static long dateToNanos(Date date) {return date.getTime() * 1000 * 1000;
}
1.3 dateToLocalDateTime
public static LocalDateTime dateToLocalDateTime(Date date) {long milliSeconds = date.getTime();Instant instant = Instant.ofEpochMilli(milliSeconds);return LocalDateTime.ofInstant(instant);
}
2 From LocalDateTime
2.1 localDateTimeToString
public static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");public static String localDateTimeToString(LocalDateTime localDateTime) {return dateTimeFormatter.format(localDateTime);
}
2.2 localDateTimeToTimestamp
public static ZoneId zoneId = ZoneId.systemDefault();// 转毫秒时间戳
public static long localDateTimeToMilliSeconds(LocalDateTime localDateTime) {return localDateTime.atZone(zoneId).toInstant().toEpochMilli();
}// 转秒时间戳
public static long localDateTimeToSeconds(LocalDateTime localDateTime) {return localDateTime.atZone(zoneId).toEpochSecond();
}// 转"秒.纳秒"时间戳
public static String localDateTimeToNanos(LocalDateTime localDateTime) {ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);return String.format("%d.%d", zonedDateTime.toEpochSecond(), zonedDateTime.getNano()));
2.3 LocalDateTimeToDate
public static LocalDateTime localDateTimeToDate(LocalDateTime localDateTime) {ZoneId zoneId = ZoneId.systemDefault();ZonedDateTime zonedDateTime = localDateTime.atZone(zoneId);Instant instant = zonedDateTime.toInstant();long milliSeconds = instant.toEpochMilli();return new Date(milliSeconds);
}
这篇关于Date、LocalDateTime、时间戳、日期字符串互转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!