本文是依据网络文章进行的汇总,持续更新帖
为什么要学 Java 8 的日期时间方法呢?SimpleDateFormat 不是很好用吗?我相信这种声音不在少数,原因有:
- SimpleDateFormat 非线程安全
- 拥抱新技术,没有什么不好的,这才是 Stay hungry
获取当前时间
Long millisecond = Instant.now().toEpochMilli(); // 精确到毫秒
Long second = Instant.now().getEpochSecond();// 精确到秒
将Long类型的时间戳转成字符串
DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time),ZoneId.systemDefault()));
将字符串时间转成Long类型的时间戳
DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parse = LocalDateTime.parse("2018-05-29 13:52:50", ftf);
LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
Date 与 LocalDateTime 互转
//将java.util.Date 转换为java8 的java.time.LocalDateTime,默认时区为东8区
public static LocalDateTime dateConvertToLocalDateTime(Date date) {
return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
}
//将java8 的 java.time.LocalDateTime 转换为 java.util.Date,默认时区为东8区
public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) {
return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
}
日期变换
/**
* 取本月第一天
*/
public static LocalDate firstDayOfThisMonth() {
LocalDate today = LocalDate.now();
return today.with(TemporalAdjusters.firstDayOfMonth());
}
/**
* 取本月第N天
*/
public static LocalDate dayOfThisMonth(int n) {
LocalDate today = LocalDate.now();
return today.withDayOfMonth(n);
}
/**
* 取本月最后一天
*/
public static LocalDate lastDayOfThisMonth() {
LocalDate today = LocalDate.now();
return today.with(TemporalAdjusters.lastDayOfMonth());
}
/**
* 取本月第一天的开始时间
*/
public static LocalDateTime startOfThisMonth() {
return LocalDateTime.of(firstDayOfThisMonth(), LocalTime.MIN);
}
/**
* 取本月最后一天的结束时间
*/
public static LocalDateTime endOfThisMonth() {
return LocalDateTime.of(lastDayOfThisMonth(), LocalTime.MAX);
Java8 LocalDateTime获取时间戳(毫秒/秒)、LocalDateTime与String互转、Date与LocalDateTime互转
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。