日期格式的相关转换

1.获取系统当前时间(转换格式)

(1)返回String类型时间格式(yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,yyyy-MM-dd HH:mm等) 

LocalDateTime.now().format(DateTimeFormatter.ofPattern ("yyyy-MM-dd HH:mm:ss"));

(2)获取当前系统时间戳,返回Long类型

 LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));

2. 获取系统当前日期前/后时间

(1)获取当前日期前10秒、10分钟、10天等

 pattern = "yyyy-MM-dd HH:mm:ss"

LocalDateTime.now().plusSeconds(-10).format(DateTimeFormatter.ofPattern(pattern));
 
LocalDateTime.now().plusMinutes(-10).format(DateTimeFormatter.ofPattern(pattern));
 
LocalDateTime.now().plusDay(-10).format(DateTimeFormatter.ofPattern(pattern));

获取当前日期后10秒、10分钟、10天等只需把时间改成正数。LocalDateTime方法还包括plusHours、plusWeeks、plusMonths、plusYears等。

(2)单独使用plus()

LocalDateTime plus(TemporalAmount amountToAdd)
//直接使用默认年月日三个参数(int类型),正整数代表当前日期之后,负整数代表当前日期之后
LocalDateTime.now().plus(Period.of(年,月,日)).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
 
LocalDateTime plus(long amountToAdd,TemporalUnit unit)
//同上
LocalDateTime.now().plus(10, ChronoUnit.YEARS).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

3.格式转换

//2022-06-28T01:53:41.000+00:00 转换成 yyyy-MM-dd HH:mm:ss格式
String localDate = LocalDateTime
.parse("2022-06-28T01:53:41.000+00:00",DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
 
//2022-06-25T00:00:00 转换成 yyyy-MM-dd格式
String date = LocalDateTime
.parse("2022-06-25T00:00:00", DateTimeFormatter.ISO_DATE_TIME)
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 
//注:其他格式转换类似
//时间戳转日期
Date date = new Date(Long.parseLong("1657508223"));
LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()), ZoneId.systemDefault())
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
 
//日期转时间戳
//yyyy-MM-dd格式转时间戳
LocalDate localDate = LocalDate.parse("2022-01-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
LocalDateTime localDateTime = localDate.atStartOfDay();
Long time = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
//yyyy-MM-dd HH:mm:ss格式转时间戳
LocalDateTime localDate = LocalDateTime
.parse("2022-01-01 10:09:09", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
Long time = localDate.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();

4. 日期比较

先将字符串转化成LocalDateTime,然后直接调用isAfter()或isBefore()方法。

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime date1 = LocalDateTime.parse("2022-01-01 10:09:09", dtf);
LocalDateTime date2 = LocalDateTime.parse("2022-01-01 11:09:09", dtf);
//返回true
date1.isBefore(date2);
//返回false
date1.isAfter(date2)

5.其他方法,获取当前日期年、月、日、当前日期季度第一天,当前日期季度最后一天等

//获取当前日期年份
int year = LocalDate.now().getYear();
 
//获取当前日期月份 直接调用getMonth()方法获取的是英文月份
int month = LocalDate.now().getMonthValue();
 
//获取当前日期日
int day = LocalDate.now().getDayOfMonth();
 
//获取当前季度第一天
Month month = Month.of(now.getMonth().firstMonthOfQuarter().getValue());
LocalDateTime ldt = LocalDateTime.of(LocalDate.of(now.getYear(), month, 1), LocalTime.MIN);
 
//获取当前季度最后一天
Month month2 = Month.of(now.getMonth().firstMonthOfQuarter().getValue()).plus(2L);
LocalDateTime ldt2 = LocalDateTime.of(LocalDate.of(now.getYear(), month2, month2.length(now.isLeapYear())), LocalTime.MAX);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值