java JDK8 时间处理
2024-09-05 07:18:01
目录
时间格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
String localDateTimeStr = formatter.format(localDateTime);
System.out.println(localDateTimeStr);
String str = "2008年08月23日 23:59:59";
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
LocalDateTime localDateTime2 = LocalDateTime.parse(str,formatter2);
System.out.println(localDateTime2);
LocalDate:年月日
LocalDate today = LocalDate.now(); // -> 2019-01-31
System.out.println("取当前日期: "+today);
LocalDate crischristmas = LocalDate.of(2018, 12, 25); // -> 2018-12-25
System.out.println("根据年月日取日期,12月就是12: "+crischristmas);
LocalDate endOfFeb = LocalDate.parse("2018-12-25"); // 严格按照ISO yyyy-MM-dd验证,02写成2都不行,当然也有一个重载方法允许自己定义格式
System.out.println("根据字符串取: "+endOfFeb);
LocalDate oneToday = today.plus(1, ChronoUnit.WEEKS); // ->2019-02-07
System.out.println("如何获取1周后的日期: "+oneToday);
LocalDate previousYear = today.minus(1, ChronoUnit.YEARS);
System.out.println("一年前的日期: "+previousYear);
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2019-01-01
System.out.println("取本月第1天: "+firstDayOfThisMonth);
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2019-01-02
System.out.println("取本月第2天: "+secondDayOfThisMonth);
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2019-01-31
System.out.println("取本月最后一天,再也不用计算是28,29,30还是31: "+lastDayOfThisMonth);
LocalDate firstDay = lastDayOfThisMonth.plusDays(1); // 变成了2019-02-01
System.out.println("取下一天: "+firstDay);
LocalDate nextSuday = today.with(DayOfWeek.SUNDAY);
System.out.println("下一个周日: "+nextSuday);
LocalDate nextSaturday = today.with(DayOfWeek.SATURDAY);
System.out.println("下一个周六: "+nextSaturday);
LocalDate firstMonday = LocalDate.parse("2019-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2019-01-07
System.out.println("取2019年1月第一个周一 "+firstMonday);
//对比日期是否为同一天(生日对比)
LocalDate birthday = LocalDate.of(1990, 10, 12);
MonthDay birthdayMd = MonthDay.of(birthday.getMonth(), birthday.getDayOfMonth());
MonthDay today = MonthDay.from(LocalDate.of(2019, 10, 12));
System.out.println(today.equals(birthdayMd));
LocalTime:时分秒毫秒
LocalTime now = LocalTime.now(); // 11:09:09.240
System.out.println("时间包含毫秒: "+now);
LocalTime now1 = LocalTime.now().withNano(0); // 11:09:09
System.out.println("时间包含不毫秒"+now1);
LocalTime zero = LocalTime.of(1, 2, 1); // 00:00:00
System.out.println("构造时间: "+zero);
LocalTime mid = LocalTime.parse("12:00:00"); // 12:00:00
System.out.println("字符串转时间: "+mid);
LocalTime twoHour = LocalTime.now().plusHours(2);
System.out.println("添加2小时: "+twoHour);
LocalDateTime:年月日时分秒
LocalDateTime ldt1 = LocalDateTime.of(2017, Month.JANUARY, 4, 17, 23, 52);
System.out.println("创建日期时间方法一: "+ldt1);
LocalDate localDate = LocalDate.of(2017, Month.JANUARY, 4);
LocalTime localTime = LocalTime.of(17, 23, 52);
LocalDateTime ldt2 = localDate.atTime(localTime);
System.out.println("创建日期时间方法二: "+ldt2);
Instant:纳秒时间戳
LocalDate date = ldt1.toLocalDate();
System.out.println("日期时间获取日期"+date);
LocalTime time = ldt1.toLocalTime();
System.out.println("日期时间获取时间"+time);
Instant instantNow =Instant.now();
System.out.println("时间戳(精确到纳秒)nanos表示纳秒部分 : "+instantNow.toEpochMilli()+instantNow.getNano());
Instant instant = Instant.ofEpochSecond(120, 100000);
System.out.println("时间戳(精确到纳秒) : "+instant);
Duration:两时间间隔
LocalDateTime from = LocalDateTime.of(2019, Month.JANUARY, 5, 10, 7, 0); // 2019-01-05 10:07:00
LocalDateTime to = LocalDateTime.of(2019, Month.FEBRUARY, 5, 10, 7, 0); // 2019-02-05 10:07:00
Duration duration = Duration.between(from, to); // 表示从 2019-01-05 10:07:00 到 2019-02-05 10:07:00 这段时间
long days = duration.toDays();
System.out.println("这段时间的总天数"+days);
long hours = duration.toHours();
System.out.println("这段时间的小时数"+hours);
long minutes = duration.toMinutes();
System.out.println("这段时间的分钟数"+minutes);
long seconds = duration.getSeconds();
System.out.println("这段时间的秒数"+seconds);
long milliSeconds = duration.toMillis();
System.out.println("这段时间的毫秒数"+milliSeconds);
long nanoSeconds = duration.toNanos();
System.out.println("这段时间的纳秒数"+nanoSeconds);
Duration:处理两个时间之间的差值
Duration duration1 = Duration.of(5, ChronoUnit.DAYS); // 5天
System.out.println("这段时间的分钟数"+duration1.toMinutes());
Duration duration2 = Duration.of(1000, ChronoUnit.MILLIS); // 1000毫秒
System.out.println("这段时间的分钟数"+duration2.toMinutes());
ZonedDateTime:引入地区
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println(zonedDateTime);
Instant instant = Instant.now();
ZoneId zoneId1 = ZoneId.of("GMT");
ZonedDateTime zonedDateTime2 = ZonedDateTime.ofInstant(instant,zoneId1);
System.out.println(zonedDateTime2);
最新文章
- 【UWP开源】图片编辑器,带贴图、滤镜、涂鸦等功能
- Python开发【十一章】:RabbitMQ队列
- 20169212《Linux内核原理与分析》第十一周作业
- 使用js把json字符串转为js对象的方法
- 01_iOS开发需要准备什么?
- IOS开发证书显示“此证书的签发者无效”解决方法
- 解决ZBarSDK 中文出现乱码
- cs231n spring 2017 lecture11 Detection and Segmentation 听课笔记
- Java集合详解及List源码分析
- Java继承与多态
- triplet loss 在深度学习中主要应用在什么地方?有什么明显的优势?
- WinRAR 0day漏洞
- CSS样式中文字的换行
- git 快照及分支
- 236A
- Spring Cloud Eureka 高可用注册中心
- Robot常用Library安装
- WPF文字间距
- 腾讯云AI平台张文杰:构建一站式机器学习服务平台
- BZOJ1066_蜥蜴_KEY