网站首页 > 精选教程 正文
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秒"));
- 上一篇: java8日期处理,收藏起来,工作会用到
- 下一篇: Java 计算日期属于当月第几周(日期周计算)
猜你喜欢
- 2024-11-24 Java好用的时间类,别再用Date了
- 2024-11-24 DATE #4、Java操作日期时间-⑦.日期格式化字符串
- 2024-11-24 Java 时间轮算法该如何实现?
- 2024-11-24 JDK8 新特性之新的日期&时间API,一篇讲清楚!
- 2024-11-24 java操作Redis缓存设置过期时间的方法
- 2024-11-24 日期循环遍历 shell & java
- 2024-11-24 Java日期查询
- 2024-11-24 JAVA8时间工具类
- 2024-11-24 equals与时间序列攻击
- 2024-11-24 详细介绍一下Spring Boot中对于日期时间数据类型的处理?
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)