网站首页 > 基础教程 正文
1.创建当前时间
// 输出: 2021-07-10T17:41:29.802Z (下同)
Instant instantNow = Instant.now();
//2021-07-11
LocalDate localDateNow = LocalDate.now();
// 01:41:29.826
LocalTime localTimeNow = LocalTime.now();
//2021-07-11T01:41:29.826
LocalDateTime localDateTimeNow = LocalDateTime.now();
//2021-07-11T01:41:29.827+08:00[Asia/Shanghai]
ZonedDateTime zonedDateTimeNow = ZonedDateTime.now();
//2021
Year year = Year.now();
//2021-07
YearMonth yearMonth = YearMonth.now();
//--07-11
MonthDay monthDay = MonthDay.now();
2.创建指定时间
// 创建:2018 年 8 月 8 日
//输出:2018-08-08 (下同)
LocalDate.of(2018,8,8);
//晚上 8 点 0 分 0 秒
//20:00
LocalTime.of(20,0);
//2018 年 8 月 8 日下午 8 点 0 分
LocalDateTime.of(2018,8,8,20,0);//2018-08-08T20:00
3.增减日期、时间
//2016 年 2 月 13 日
LocalDate ld = LocalDate.of(2016,2,13);
// 计算 4 天后的时间
ld.plusDays(4);
//计算当前时间的 3 周后的时间
LocalDate.now().plusWeeks(3);
//计算当前时间 5 个月后的时间
LocalDate.now().plusMonths(5);
//计算当前时间 2 年后的时间
LocalDate.now().plusYears(2);
//8 点 14 分 39 秒 218 纳秒
LocalTime time = LocalTime.of(8,14,39,218);
//计算当前时间 500 纳秒后的时间
LocalTime.now().plusNanos(500);
//计算当前时间45秒后的时间
LocalTime.now().plusSeconds(45);
//计算当前时间19分钟后的时间
LocalTime.now().plusMinutes(19);
//计算当前时间3小时后的时间
LocalTime.now().plusHours(3);
注:减少使用 minusXXX ,用法相同
4.其他增减日期时间方法
//今天程序员小张查看自己的车辆保险记录的时候看到还有比 2 年 3 月 8 天就到期了,计算到期时间是什么时候。
LocalDateTime.now().plusYears(2).plusMonths(3).plusDays(8);
//或
Period period = Period.of(2,3,8);//来表示一段时间,三个参数代表年月日
LocalDateTime.now().plus(period);
//结婚10年称为锡婚,2020年2月2日11点11分11秒称为对称日,很多情侣准备在那天结婚,如果在那天结婚了,那么锡婚会发生在什么时候?
LocalDateTime.of(2020,2,2,11,11,11).plus(1,ChronoUnit.DECADES)
//加一个半天
LocalDateTime.now().plus(1,ChronoUnit.HALF_DAYS);
5.修改日期、时间
案例1:
//修改为1号
LocalDateTime.now().withDayOfMonth(1);
//修改为1号
LocalDateTime.now().with(ChronoField.DAY_OF_MONTH,1);
案例2:
LocalDate now = LocalDate.now();
//修改时间为当月第一天
now.with(TemporalAdjusters.firstDayOfMonth());
//修改时间为下个月的第一天.
LocalDate firstDayoOfNextMonth = now.with(TemporalAdjusters.firstDayOfNextMonth());
//修改时间为下一年的第一天.
LocalDate firstDayofNextYear = now.with(TemporalAdjusters.firstDayOfNextYear());
//修改时间为本年的第一天.
LocalDate firstDayofYear = now.with(TemporalAdjusters.firstDayOfYear());
//修改时间为本月的最后一天.
LocalDate lastDayofMonth = now.with(TemporalAdjusters.lastDayOfMonth());
//修改时间为本年的最后一天.
LocalDate lastDayofYear = now.with(TemporalAdjusters.lastDayOfYear());
案例3:
//将当前时间改为下一个周日
LocalDate.now().with(TemporalAdjusters.next(DayOfWeek.SUNDAY));
//将当前时间该上一个周三
LocalDate.now().with(TemporalAdjusters.previous(DayOfWeek.WEDNESDAY));
案例4:
//假如员工一个月中领取工资,发薪日是每月15号,如果发薪日时周末,则调整为周五。
LocalDate date = LocalDate.of(2021,5,15).with(d->{
LocalDate readyDay = LocalDate.from(d);
readyDay = readyDay.withDayOfMonth(15);
if(readyDay.getDayOfWeek()== DayOfWeek.SUNDAY||readyDay.getDayOfWeek()==DayOfWeek.SATURDAY){
readyDay = readyDay.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
}
return readyDay;
});
案例5:
//计算当前时间距离下一个劳动节还有多少天?
Long days = LocalDate.of(2021,4,1).query(d->{
//1.TemporalAccessor是LocalDate和LocalDateTime的顶级父接口,相当于LocalDate就是这个接口的实现类,将temporal转换为LocalDate进行使用.
LocalDate now = LocalDate.from(d); //now -> 2020 - 1 - 17
//2.封装当年的劳动节时间,年份: now来获取,月份:Month.MAY,日期:1.
LocalDate laborDay = LocalDate.of(now.getYear(), Month.MAY,1);//laborDay -> 2020 - 5
//2.1.判断当前时间是否已经超过了当年的劳动节,如果超过了当年的劳动节,则laborDay+1年.
if (now.isAfter(laborDay)) {
laborDay = laborDay.plusYears(1);
}
//3.通过Chronounit的between方法来计算两个时间点的差额.
return ChronoUnit.DAYS.between( now,laborDay);
});
6.日期类之间的转换
案例1: java.util.Date 转换为 java.time.LocalDate
Date date= new Date();
Instant i = date.toInstant();
ZonedDateTime z = i.atZone(ZoneId.systemDefault());
LocalDate d = z.toLocalDate();
案例2:java.sql.Date转换为java.time.LocalDate
Date date= new Date(System.currentTimeMillis());
date.toLocalDate();
案例3:java.sql.Timestamp 转换为java.time.LocalDate
Timestamp date= new Timestamp(System.currentTimeMillis());
date.toLocalDateTime();
案例4:使用java.sql.Date类将java.util.Date转换为java.time.LocalDate
Date d= new Date();
java.sql.Date date = new java.sql.Date(d.getTime());
date.toLocalDate();
案例5:将Calendar 转换为java.time.ZonedDateTime
//1.初始化calendar对象.
Calendar cal = Calendar.getInstance();
//2.calendar对象自Java1.1版本开始提供了一个方法用于获取时区对象getTimezone方法,要将calendar转换为zonedDateTime对象需要先获取到时区对象,
TimeZone timezone = cal.getTimeZone();
//3.从Java1.8开始Timezone类提供一个方法可以获取到ZoneId ->拿zoneTd对象来构建
ZoneId zoneId = timezone.toZoneId();
//4.ZonedDateTime类有一个ofInstant方法,可以将一个Instant对象和ZoneId对象封装为一个ZonedDateTime.
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(cal.toInstant(), zoneId);
7.日期时间格式化和解析
案例1:
LocalDateTime now = LocalDateTime.now();
//输出:2021-07-07(下同)
String s1 = now.format(DateTimeFormatter.ISO_DATE);
//2021-07-07T07:09:21.056
String s2= now.format(DateTimeFormatter.ISO_DATE_TIME);
//解析
LocalDateTime time = LocalDateTime.parse(s2);
案例2:
LocalDateTime now = LocalDateTime.now();
now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL));//2021年7月7日 星期三
now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG));//2021年7月7日
now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM));//2021-7-7
now.format(DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT));//21-7-7
案例3:
LocalDateTime d= LocalDateTime.of(1998,3,18,17,19,28);
//输出:1998-03月-18---17:19分28秒
d.format(DateTimeFormatter.ofPattern("yyyy-MM月-dd---HH:mm分ss秒"));
猜你喜欢
- 2024-10-23 Java Date 转 LocalDate javadate转localdate
- 2024-10-23 java date对象的正确使用方法 java中date
- 2024-10-23 SpringBoot反序列化LocalDateTime总失败
- 2024-10-23 Java 8 LocalDate类入门实战:初学者必读的用法详解与概念梳理
- 2024-10-23 Java 计算日期属于当月第几周(日期周计算)
- 2024-10-23 SpringBoot中时间戳和LocalDate相关的接收和转换
- 2024-10-23 从LocalDateTime序列化探讨全局一致性序列化
- 2024-10-23 面试必备:ThreadLocal详解 threadlocale
- 2024-10-23 Java,java.time.LocalDate,根据具体的时间,每一日(天)递增
- 2024-10-23 Java LocalDate 类 和 Date 类 java中date类型
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (68)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)