Java8时间格式化-LocalDateTime的API

//格式化
//String转LocalDateTime
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String dateStr = "2021-08-19 15:11:30";
LocalDateTime date2 = LocalDateTime.parse(dateStr, fmt);
2.转string
String string1 = zeroTime.format(pattern);
3.向201802这种要使用YearMonth, 年月日没有时分秒的要使用LocalDate
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMM");
YearMonth curDate = YearMonth.parse(String.valueOf(curAccountMonth), fmt);

//时间的加减
LocalDateTime before = LocalDateTime.now().minusMonths(1);//向前1月
LocalDateTime next = LocalDateTime.now().plusMonths(1);//向后1月
3.今天添加一天,也就是获取明天
LocalDate tomorrow = LocalDate.now().plusDays(1);
4.从今天减去一个月
LocalDate prevMonth = LocalDate.now().minus(1, ChronoUnit.MONTHS);
5.增加毫秒
LocalDateTime time = now1.plus(600000, ChronoUnit.MILLIS);
6.获取秒数
Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
7.获取毫秒数
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

//获取时刻
LocalDateTime min = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);//2021-08-03T00:00
LocalDateTime max = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);//2021-08-03T23:59:59.999999999
LocalDateTime noon = LocalDateTime.of(LocalDate.now(), LocalTime.NOON);//2021-08-03T12:00

LocalDateTime now = LocalDateTime.now();
now.with(TemporalAdjusters.firstDayOfMonth()); 当月第一天 2021-08-01T17:12:42.388
now.with(TemporalAdjusters.firstDayOfMonth()); 当月最后一天 2021-08-31T17:12:42.388
now.with(TemporalAdjusters.firstDayOfNextMonth()) 下月第一天 2021-09-01T17:12:42.388
now.with(TemporalAdjusters.firstDayOfYear()) 当年第一天 2021-01-01T17:17:12.723
now.with(TemporalAdjusters.lastDayOfYear()) 当年最后一天 2021-12-31T17:17:12.723
now.with(TemporalAdjusters.next(DayOfWeek.MONDAY)) 下一个周一 2021-08-09T17:18:44.847
now.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY)) 最后一个周五 2021-08-27T17:20:34.026


//时间互转
//LocalDateTime 转 LocalDate
LocalDate localDate = now.toLocalDate();
//LocalDate 转 LocalDateTime
LocalDateTime localDateTime1 = localDate.atStartOfDay(); // 2021-08-03T00:00
LocalDateTime localDateTime2 = localDate.atTime(8, 20, 33); // 2021-08-03T08:20:33
LocalDateTime localDateTime3 = localDate.atTime(LocalTime.now()); //2021-08-03T17:28:57.248
//LocalDateTime 转 Date
ZoneId zoneId = ZoneId.systemDefault(); //获取系统默认时区
ZonedDateTime zonedDateTime = now.atZone(zoneId);        //时区的日期和时间
Date d = Date.from(zonedDateTime.toInstant()); //获取时刻
//Date 转 LocalDateTime 先转 (ZonedDateTime 再转 LocalDateTime)
Date date = new Date();
ZoneId zoneId_1 = ZoneId.systemDefault();
LocalDateTime localDateTime = date.toInstant().atZone(zoneId).toLocalDateTime();


//Date
比较date最终也是long的大小比较。
1.date1.before(date2);  //date1小于date2(date1比date2早)
   date1.after(date2);  //date1大于(date1比date2晚)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值