java LocalDateTime的使用
阅读原文时间:2023年07月05日阅读:1

1.LocalDateTime的基本使用

//获取当前时间
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime);
//时间转字符串
String format = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(format);
//字符串转时间
LocalDateTime dateTime = LocalDateTime.parse(format, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(dateTime);
//localDateTime转换为时间戳
long time = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
System.out.println(time);
//时间戳转换为localDateTime
LocalDateTime newLocalTime = Instant.ofEpochMilli(time).atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println(newLocalTime);
//LocalDateTime转LocalDate
LocalDate localDate = dateTime.atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(localDate);

String startTimeMin = LocalDateTime.now().with(LocalTime.MIN)
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(startTimeMin);
String endTime = LocalDateTime.now().with(LocalTime.MAX)
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(endTime);

String startTime = "2022-04-14 13:30:00";
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.parse(startTime, dateTimeFormatter);
System.out.println(localDateTime);
long epochMilli = localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
System.out.println("epochMilli = " + epochMilli);

LocalDateTime localDateTime1 = Instant.ofEpochMilli(epochMilli).atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println("localDateTime1 = " + localDateTime1);
System.out.println(localDateTime1.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS")));

LocalDateTime s = LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault());

LocalDateTime lt = LocalDateTime.ofInstant(Instant.ofEpochMilli(utcTimestamp), ZoneOffset.ofHours(8));

Long endDate = Instant.ofEpochMilli(epochMilli)
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
.with(LocalTime.MAX)
.toInstant(ZonedDateTime.now().getOffset())
.toEpochMilli();
System.out.println(LocalDateTime.ofInstant(Instant.ofEpochMilli(endDate),ZoneId.systemDefault()));

/**
* 根据时区转换为本时区时间
* @param utc utc 时间 yyyy-MM-dd HH:mm:ss
* @param timeZone 时区
* @return
*/
public static String utcToLocal(Long utc, String timeZone) {
if (StringUtils.isEmpty(timeZone)) {
timeZone = "+08:00";
}
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(utc), ZoneId.of(timeZone));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return localDateTime.format(formatter);
}

2.相关操作方法

//本星期过了多少天
int day= localDateTime.getDayOfWeek().getValue();
//本月过了多少天
int dayOfMonth = localDateTime.getDayOfMonth();
//本年过了多少天
int dayOfYear = localDateTime.getDayOfYear();
System.out.println("本周过了"+day+ "天,本月过了几:" + dayOfMonth + "天,本年过了几:" + dayOfYear+"天。");

now().isAfter(date) 当前时间是否在date之后(大于date)
now().isBefore(date) 当前时间是否在date之前(小于date)
now().plusDays() 当前时间加几天 (还有年、月、小时、分钟、秒、周)
now().minusDays() 当前时间减几天(还有年、月、小时、分钟、秒、周)

3.with方法相关操作

//获取今天刚开始时间
System.out.println(localDateTime.with(LocalTime.MIN));
//获取今天的最大时间
System.out.println(localDateTime.with(LocalTime.MAX));
// 获取第几周的星期几
System.out.println(localDateTime.with(TemporalAdjusters.dayOfWeekInMonth(2, DayOfWeek.of(3))));
//本月第一天
System.out.println(localDateTime.with(TemporalAdjusters.firstDayOfMonth()));
//下月第一天
System.out.println(localDateTime.with(TemporalAdjusters.firstDayOfNextMonth()));
//下年第一天
System.out.println(localDateTime.with(TemporalAdjusters.firstDayOfNextYear()));
//本年第一天
System.out.println(localDateTime.with(TemporalAdjusters.firstDayOfYear()));
//本月最后一天
System.out.println(localDateTime.with(TemporalAdjusters.lastDayOfMonth()));
//本年最后一天
System.out.println(localDateTime.with(TemporalAdjusters.lastDayOfYear()));
//下周四   如果今天是周四,则返回下个周四。如果今天是周三,则返回明天的时间
System.out.println(localDateTime.with(TemporalAdjusters.next(DayOfWeek.THURSDAY)));
// 如果今天是周四  则返回当前时间,如果今天是周三,则返回明天的时间
System.out.println(localDateTime.with(TemporalAdjusters.nextOrSame(DayOfWeek.THURSDAY)));
//本月第一个周四
System.out.println(localDateTime.with(TemporalAdjusters.firstInMonth(DayOfWeek.THURSDAY)));
//本月最后一个周四
System.out.println(localDateTime.with(TemporalAdjusters.lastInMonth(DayOfWeek.THURSDAY)));
//前一个周三
System.out.println(localDateTime.with(TemporalAdjusters.previous(DayOfWeek.WEDNESDAY)));
//前一个周三  如果今天是周三返回今天时间
System.out.println(localDateTime.with(TemporalAdjusters.previousOrSame(DayOfWeek.WEDNESDAY)));

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章