Java日期时间(LocalDate、LocalTime、LocalDateTime)

文章目录

  • Java日期时间(LocalDate、LocalTime、LocalDateTime)
    • 前言
    • 1、LocalDate
      • 1.1、LocalDate常用API
      • 1.2、LocalDate 与 String 之间的转换
      • 1.3、LocalDate 与 Date之间的转换
    • 2、LocalTime
      • 2.1、LocalTime常用API
      • 2.2、LocalTime与 String 之间的转换
    • 3、LocalDateTime
      • 3.1、LocalDateTime常用API
      • 3.2、LocalDateTime与 String 之间的转换
      • 3.3、LocalDateTime与 Date之间的转换

Java日期时间(LocalDate、LocalTime、LocalDateTime)

前言

Java中1.8之前有date类,date类到了1.8大部分的方法被弃而且date类如果不格式化可读性十分差,而simpledateformat方法中format和parse方法都是线程不安全的。Java1.8之后出现了localdate,localdatetime,localtime这些类,而这些类使用了final来修饰,使得这些类是不可变的,一旦实例化,值就固定了,有点类似于String类,所以这些类都是线程安全的。

localdate年月日,localtime时分秒,localdatetime年月日时分秒

1、LocalDate

LocalDate类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息,这个类是不可变的和线程安全的。

方法描述
now根据当前时间创建LocalDate对象
of根据指定年月日创建LocalDate对象
getYear获得年份
getMonthValue获得月份
getMonth获得月份枚举值
getDayOfMonth获得月份天数(1-31)
getDayOfWeek获得星期几
getDayOfYear获得年份中的第几天(1-366)
lengthOfYear获得当年总天数
lengthOfMonth获得当月总天数
toEpochDay与时间纪元(1970年1月1日)相差的天数
plusDays加天
plusWeeks加周
plusMonths加月
plusYears加年
minusDays减年
minusWeeks减周
minusMonths减月
minusYears减年
withYear替换年份
withYear替换年份
withDayOfMonth替换日期
withDayOfYear替换日期
isBefore是否日期在之前
isAfter是否日期在之后
isEqual是否是当前日期
isleapYear是否是闰年

1.1、LocalDate常用API

代码如下(示例):

//A.获取
//(1)获取当前日期 2022-04-20
System.out.println(LocalDate.now());
//(2)获取指定日期 2014-03-18
System.out.println(LocalDate.of(2014, 3, 18));
//(3)获取日期的年份 2022
System.out.println(LocalDate.now().getYear());
//(4)获取日期的月份 4
System.out.println(LocalDate.now().getMonthValue());
//(5)获取日期的日子 20
System.out.println(LocalDate.now().getDayOfMonth());
//(6)获取日期的星期 WEDNESDAY
System.out.println(LocalDate.now().getDayOfWeek());
//(7)当天所在这一年的第几天 110
System.out.println(LocalDate.now().getDayOfYear());
//(8)获取当年天数 365
System.out.println(LocalDate.now().lengthOfYear());
//(9)获取当月天数 30
System.out.println(LocalDate.now().lengthOfMonth());
//(10)与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天 19102
System.out.println(LocalDate.now().toEpochDay());//B.运算
//(1)加一天
System.out.println("加1天:" + LocalDate.now().plusDays(1));
//(2)加一周
System.out.println("加1周:" + LocalDate.now().plusWeeks(1));
//(3)加一月
System.out.println("加1月:" + LocalDate.now().plusMonths(1));
//(4)加一年
System.out.println("加1年:" + LocalDate.now().plusYears(1));
//(5)减一天
System.out.println("减1天:" + LocalDate.now().minusDays(1));
//(6)减一周
System.out.println("减1周:" + LocalDate.now().minusWeeks(1));
//(7)减一月
System.out.println("减1月:" + LocalDate.now().minusMonths(1));
//(8)减一年
System.out.println("减1年:" + LocalDate.now().minusYears(1));//C.替换
//(1)替换年份
System.out.println("替换年份为1:" + LocalDate.now().withYear(1));
//(2)替换月份
System.out.println("替换月份为1:" + LocalDate.now().withMonth(1));
//(3)替换日子
System.out.println("替换日期为1:" + LocalDate.now().withDayOfMonth(1));
//(4)替换天数
System.out.println("替换天数为1:" + LocalDate.now().withDayOfYear(1));//D.比较
//(1)是否在当天之前
System.out.println("是否在当天之前:" + LocalDate.now().minusDays(1).isBefore(LocalDate.now()));
//(2)是否在当天之后
System.out.println("是否在当天之后:" + LocalDate.now().plusDays(1).isAfter(LocalDate.now()));
//(3)是否在当天
System.out.println("是否在当天:" + LocalDate.now().isEqual(LocalDate.now()));
//(4)是否是闰年
System.out.println("今年是否是闰年:" + LocalDate.now().isLeapYear());

1.2、LocalDate 与 String 之间的转换

//(1)从文本字符串获取LocalDate实例
LocalDate localdate = LocalDate.parse("2022-04-21");
System.out.println(localdate);//(2)使用特定格式化形式从文本字符串获取LocalDate实例
String str = "2019-03-03";
DateTimeFormatter fmt1 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate date = LocalDate.parse(str, fmt1);
System.out.println(date);//(3)使用特定格式化形式将LocalDate转为字符串
LocalDate today = LocalDate.now();
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String dateStr = today.format(fmt);
System.out.println(dateStr);

1.3、LocalDate 与 Date之间的转换

//(1)LocalDate转化为Date
ZonedDateTime zonedDateTime = LocalDate.now().atStartOfDay(ZoneId.systemDefault());
Date date = Date.from(zonedDateTime.toInstant());
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));//(2)Date转化为LocalDate
LocalDate localDate = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));

2、LocalTime

LocalTime是一个不可变的时间对象,代表一个时间,格为 时 - 分 - 秒,时间表示为纳秒精度,这个类是不可变的和线程安全的。

方法描述
static LocalTime now()获取默认时区的当前时间
static LocalTime now(ZoneId zone)获取指定时区的当前时间
static LocalTime now(Clock clock)从指定时钟获取当前时间
of根据指定的时、分、秒获取LocalTime 实例
getHour获取小时字段
getMinute获取分钟字段
getSecond获取秒字段
getNano获取纳秒字段
plusHours增加小时数
plusMinutes增加分钟数
plusSeconds增加秒数
plusNanos增加纳秒数
minusHours减少小时数
minusMinutes减少分钟数
minusSeconds减少秒数
minusNanos减少纳秒数
compareTo时间与另一个时间比较
isAfter检查时间是否在指定时间之后
isBefore检查时间是否在指定时间之前

2.1、LocalTime常用API

代码如下(示例):

//A.获取
//(1)获取默认时区的当前时间 14:11:31.294
System.out.println(LocalTime.now());
//(2)获取指定时区的当前时间 14:11:31.392
System.out.println(LocalTime.now(ZoneId.of("Asia/Shanghai")));
//(3)从指定时钟获取当前时间 14:11:31.392
System.out.println(LocalTime.now(Clock.systemDefaultZone()));
//(4)指定获取时分秒
System.out.println(LocalTime.of(12, 30, 30));
//(5)指定获取时分
System.out.println(LocalTime.of(12, 30));
//(6)指定获取时分秒纳秒
System.out.println(LocalTime.of(12, 30, 30, 123));
//(7)获取小时字段
System.out.println("时: " + LocalTime.now().getHour());
//(8)获取分钟字段
System.out.println("时: " + LocalTime.now().getMinute());
//(9)获取秒字段
System.out.println("时: " + LocalTime.now().getSecond());
//(10)获取纳秒字段
System.out.println("时: " + LocalTime.now().getNano());//B.计算
//(1)增加一小时
System.out.println("增加1小时: " + LocalTime.now().plusHours(1));
//(2)增加三十分钟
System.out.println("增加30分钟: " + LocalTime.now().plusMinutes(30));
//(3)增加三十秒
System.out.println("增加30秒: " + LocalTime.now().plusSeconds(30));
//(4)增加一万纳秒
System.out.println("增加10000纳秒:" + LocalTime.now().plusNanos(10000));
//(5)减少一小时
System.out.println("减少1小时: " + LocalTime.now().minusHours(1));
//(6)减少三十分钟
System.out.println("减少30分钟: " + LocalTime.now().minusMinutes(30));
//(7)减少三十秒
System.out.println("减少30秒: " + LocalTime.now().minusSeconds(30));
//(8)减少一万纳秒
System.out.println("减少10000纳秒:" + LocalTime.now().minusNanos(10000));//C.比较
//(1)时间与另一个时间比较 0(相等)正数(大)负数(小)
System.out.println(LocalTime.now().compareTo(LocalTime.now()));
//(2)检查时间是否在指定时间之后
System.out.println(LocalTime.now().isAfter(LocalTime.now()));
//(3)检查时间是否在指定时间之前
System.out.println(LocalTime.now().isBefore(LocalTime.now()));

2.2、LocalTime与 String 之间的转换

//(1)从文本字符串获取LocalTime实例
LocalTime localTime1 = LocalTime.parse("12:30:30");
System.out.println(localTime1);//(2)使用特定格式化形式从文本字符串获取LocalTime实例
LocalTime localTime2 = LocalTime.parse("12:30:30", DateTimeFormatter.ofPattern("HH:mm:ss"));
System.out.println(localTime2);//(3)使用特定格式化形式将LocalTime转为字符串
DateTimeFormatter df1 = DateTimeFormatter.ofPattern("HH:mm:ss");
LocalTime localTime3 = LocalTime.now();
System.out.println(localTime3.format(df1));

3、LocalDateTime

LocalDateTime是一个不可变的日期时间对象,代表日期时间,格式为 年 - 月 - 日 - 时 - 分 - 秒,这个类是不可变的和线程安全的。

方法描述
static LocalDateTime now()获取默认时区的当前日期时间
static LocalDateTime now(Clock clock)从指定时钟获取当前日期时间
static LocalDateTime now(ZoneId zone)获取指定时区的当前日期时间
static LocalDateTime of(LocalDate date, LocalTime time)根据日期和时间对象获取LocalDateTime 实例
static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second)second) 根据指定的年、月、日、时、分、秒获取LocalDateTime 实例
getYear获取年份
getMonth使用月份枚举类获取月份
getDayOfMonth获取日期在该月是第几天
getDayOfWeek获取日期是星期几
getDayOfYear获取日期在该年是第几天
getHour获取小时
getMinute获取分钟
getSecond获取秒
getNano获取纳秒
plusYears增加年
plusMonths增加月
plusWeeks增加周
plusDays增加天
plusHours增加小时
plusMinutes增加分
plusSeconds增加秒
plusNanos增加纳秒
minusYears减少年
minusMonths减少月
meminusWeeks减少周
minusDays减少天
minusHours减少小时
minusMinutes减少分
minusSeconds减少秒
minusNanos减少纳秒
isEqual判断日期时间是否相等
isBefore检查是否在指定日期时间之前
isAfter检查是否在指定日期时间之后

3.1、LocalDateTime常用API

代码如下(示例):

//A.获取
//(1)获取默认时区的当前日期时间
System.out.println(LocalDateTime.now());
//(2)获取指定时区的当前日期时间
System.out.println(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));
//(3)从指定时钟获取当前日期时间
System.out.println(LocalDateTime.now(Clock.systemDefaultZone()));
//(4)根据日期和时间对象获取LocalDateTime实例
System.out.println(LocalDateTime.of(LocalDate.now(), LocalTime.now()));
//(5)根据指定的年、月、日、时、分、秒获取LocalDateTime实例
System.out.println(LocalDateTime.of(2019, 12, 7, 21, 48, 50));
//(6)获取年份
System.out.println("年 : " + LocalDateTime.now().getYear());
//(7)使用月份枚举类获取月份
System.out.println("月(英文) : " + LocalDateTime.now().getMonth());
//(8) 使用月份数字类获取月份
System.out.println(" 月(数字英文): " + LocalDateTime.now().getMonth().getValue());
//(9)获取日期在该月是第几天
System.out.println("天 : " + LocalDateTime.now().getDayOfMonth());
//(10)获取日期是星期几(英文)
System.out.println("星期几(英文) : " + LocalDateTime.now().getDayOfWeek());
//(11)获取日期是星期几(数字英文)
System.out.println("星期几(数字英文) : " + LocalDateTime.now().getDayOfWeek().getValue());
//(12)获取日期在该年是第几天
System.out.println("本年的第几天 : " + LocalDateTime.now().getDayOfYear());
//(13)获取小时
System.out.println("时: " + LocalDateTime.now().getHour());
//(14)获取分钟
System.out.println("分: " + LocalDateTime.now().getMinute());
//(15)获取秒
System.out.println("秒: " + LocalDateTime.now().getSecond());
//(16)获取纳秒
System.out.println("纳秒: " + LocalDateTime.now().getNano());//B.计算
//(1)增加天数
System.out.println("增加天数 : " + LocalDateTime.now().plusDays(1));
//(2)增加周数
System.out.println("增加周数 : " + LocalDateTime.now().plusWeeks(1));
//(3)增加月数
System.out.println("增加月数 : " + LocalDateTime.now().plusMonths(1));
//(4)增加年数
System.out.println("增加年数 : " + LocalDateTime.now().plusYears(1));
//(5)减少天数
System.out.println("减少天数 : " + LocalDateTime.now().minusDays(1));
//(6)减少月数
System.out.println("减少月数 : " + LocalDateTime.now().minusMonths(1));
//(7)减少周数
System.out.println("减少周数 : " + LocalDateTime.now().minusWeeks(1));
//(8)减少年数
System.out.println("减少年数 : " + LocalDateTime.now().minusYears(1));
//(9)增加小时
System.out.println("增加1小时: " + LocalDateTime.now().plusHours(1));
//(10)增加分钟
System.out.println("增加30分钟: " + LocalDateTime.now().plusMinutes(30));
//(11)增加秒数
System.out.println("增加30秒: " + LocalDateTime.now().plusSeconds(30));
//(12)增加纳秒
System.out.println("增加10000纳秒:" + LocalDateTime.now().plusNanos(10000));
//(13)减少小时
System.out.println("减少1小时:" + LocalDateTime.now().minusHours(1));
//(14)减少分钟
System.out.println("减少30分钟:" + LocalDateTime.now().minusMinutes(30));
//(15)减少秒数
System.out.println("减少30秒: " + LocalDateTime.now().minusSeconds(30));
//(16)减少纳秒
System.out.println("减少10000纳秒:" + LocalDateTime.now().minusNanos(10000));//C.比较
//(1)判断日期时间是否相等
System.out.println(LocalDateTime.now().isEqual(LocalDateTime.now()));
//(2)检查是否在指定日期时间之前
System.out.println(LocalDateTime.now().isBefore(LocalDateTime.now()));
//(3)检查是否在指定日期时间之后
System.out.println(LocalDateTime.now().isAfter(LocalDateTime.now()));

3.2、LocalDateTime与 String 之间的转换

//(1)获取日期部分
System.out.println(LocalDateTime.now().toLocalDate());//(2)获取时间部分
System.out.println(LocalDateTime.now().toLocalTime());//(3)从文本字符串获取LocalDateTime实例
LocalDateTime ldt2 = LocalDateTime.parse("2019-12-07T21:20:06.303995200");
System.out.println(ldt2);//(4)使用特定格式化形式从文本字符串获取LocalDateTime实例
DateTimeFormatter df1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime ldt3 = LocalDateTime.parse("2019-12-07 21:20:06", df1);
System.out.println(ldt3);//(5)使用特定格式化形式将LocalDateTime转为字符串
String ldt4 = df1.format(ldt3);
System.out.println(ldt4);

3.3、LocalDateTime与 Date之间的转换

//(1)LocalDateTime转化为Date
ZonedDateTime zdt = LocalDateTime.now().atZone(ZoneId.systemDefault());
Date date1 = Date.from(zdt.toInstant());
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date1));//(2)Date转化为LocalDateTime
LocalDateTime localDateTime = new Date().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println(localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决win10电脑声音太小的问题

右击任务栏声音图标,点击选择菜单中的“播放设备”。 如果声音图标未显示,请在控制面板(大图标查看方式)中,点击选择“声音”。 在声音对话框,点击选中扬声器,然后点击下面的“属性”。 在扬声器 属性对话框&#xff0…

win7 ie临时文件夹怎么修改存放位置

首先,鼠标左键双击打开Internet Explorer,然后点击右上角的设置图标,点Internet选项。 打开之后,找到并点击“设置” 打开之后,找到并点击“移动文件夹” 然后找一个存放IE临时文件的位置,设好了之后点确定。 要让IE临时文件的移动生效,要对移…

LocalDateTime工具类:根据当前、周、月、季度、半年、年等维度获取时间hutool工具包获取农历日期,生肖,传统节日

1. 简介 Java8提供了全新的日期处理包(java.time.*),根据Java8日期新特性封装日期时间工具类LocalDateTimeUtils。 2. 工具类方法目录 说明方法名称当前时间LocalDateTimeUtils.now()Date 转 LocalDateTimeLocalDateTimeUtils.convert(new…

笔记本蓝牙怎么打开

笔记本蓝牙有什么用呢?我们可以用蓝牙耳机连接上笔记本的蓝牙,然后就可以听音乐,看电影等操作。所以接下来就来给小伙伴说说怎么打开笔记本蓝牙。 以win8为例进行演示 1、首先,把鼠标拉倒最右下角,然后点设置。 2、然后&#x…

Java8时间间隔计算Period.between与LocalDate.until区别LocalDate,LocalDateTime计算两个时间的相差时间

记录一线上问题,编辑会员卡信息,有效期截止时间由2022-04-17修改为2023-04-18,操作成功之后显示剩余的有效天数为24天,实际上怎么也得有三百多天.之前本地测试一直没有问题,现将定位过程记录一下. 本地复测之后发现计算的是24天,果然有问题. Period period Period.between(Loc…

MySQL中DATE_FORMAT()函数的说明和简介

MySQL DATE_FORMAT函数简介 要将日期值格式化为特定格式,请使用DATE_FORMAT函数。 DATE_FORMAT函数的语法如下: DATE_FORMAT(date,format);DATE_FORMAT()函数接受两个参数: date:是要格式化的有效日期值format:是由…

win8升级win10出现错误代码1049怎么回事

最近有用户把自己的win8系统升级到win10后遇到了错误代码1049,那么这是咋回事呢?下面小编就给大家介绍一下win8升级win10出现错误代码1049的解决方法。 1、报错信息如下所示,完全不理解是什么意思,点击《转到存储》菜单,看到的是…

Stream的Collectors.groupingBy支持key为null进行分组

场景 在使用Collectors.groupingBy分组时,如果分组的字段中有值为null,会抛出空指针异常 例如: // An highlighted block calss User{private Integer age;private String sex; }public static void main(String[] args){User user1 new User(18, "女");User user…

简单几步解决笔记本风扇一直嗡嗡响的问题

我们在使用电脑时难免会遇到一些问题。例如我们都知道笔记本都会自带有一个风扇,如果长时间使用的话就会帮助扇热。但最近有网友就表示自己的笔记本风扇一直嗡嗡响,不知道怎么回事,也不知道该如何解决很是苦恼,所以今天小编为大家…

acer笔记本电脑如何进入bios设置

acer笔记本电脑对于外出办公的用户来说是一个不错的选择,但最近小编发现有许多使用acer笔记本电脑的朋友是不知道怎么进入BIOS设置的。因此,针对这个问题我就赶紧整理了这个acer笔记本电脑进入BIOS设置的教程,现在就来分享给大家,…

[内排序]八大经典排序合集

文章目录1 排序的基本概念1.1 什么是排序1.2 排序的稳定性1.3 内排序和外排序2 插入排序2.1 直接插入排序1. 排序思路2. 直接插入排序实例3. 排序算法4. 算法分析5. 折半插入排序 / 二分插入排序5.1 排序思路5.2 排序算法5.3 算法分析2.2 希尔排序1. 排序思路2. 希尔排序实例3.…

怎么解决机械革命笔记本蓝屏问题

1、重启电脑,出现logo界面后连续按F2键直到打开bios,接着切换至“Advanced”,将光标移至“OS Support”选项,并将后面数值调成“Others”。 2、接下来将光标移至“SATA Device”选项,将硬盘模式调成“AHCI”。 3、最后…

UnsupportedOperationException——操作不支持异常

UnsupportedOperationException 是用于表明操作不支持的异常。在 JDK 类中已被大量运用,在集合框架 java.util.Collections.UnmodifiableCollection 将会在所有 add 和 remove 操作中抛出这个异常。 Java不支持该功能,多见于Arrays.asList(),…

bootsqm.dat是什么文件 bootsqm.dat可以删除吗

我们经常会发现系统C盘里面有一个bootsqm.dat文件,这个文件占用空间还是蛮大的,因此有些用户想要知道bootsqm.dat是什么文件?bootsqm.dat可以删除吗?其实这两个问题很简单,下面就由小编来告诉大家bootsqm.dat是什么文件及其能不能删除吧! …

win10笔记本打开只有飞行模式的解决方法

方法一: 1、按下“winr”打开运行,输入“regedit”,依次展开到“HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesNdisuio”,查看其“DisplayName”键值是“NDISUsermode I/O Protocol”如缺损,可新建; 2、在右边…

【Java 8 新特性】Java Comparator.reverseOrder | 倒序排序-静态方法

文章目录在 Stream.sorted 中使用在 Collections.sort 中使用在 List.sort 中使用在 Arrays.sort 中使用参考文献Comparator.reverseOrder是Java 8中引入的一个静态方法,它返回比较器,对对象集合进行反向自然排序。 对于自然排序,一个类需要…

笔记本win10系统连接wifi显示无Internet安全如何解决

方法一: 1、进入设置,找到“网络和Internet”,双击; 2、找到“更改适配器选项”,双击; 3、双击进入你的WLAN; 4、找到页面下方“属性”,单击; 5、(1)如果在项目列表里出项“WifiMasterNATDriver”是选中状态的话&…

Java8 Stream 之groupingBy 分组详解

本文主要讲解&#xff1a;Java 8 Stream之Collectors.groupingBy()分组示例 Collectors.groupingBy() 分组之常见用法 功能代码: /*** 使用java8 stream groupingBy操作,按城市分组list*/public void groupingByCity() {Map<String, List<Employee>> map employ…

win10 更新后不能切换输入法怎么办 win10输入法切换不了怎么解决

有win10用户说他在更新完系统后&#xff0c;在切换输入法的时候发现竟然切换不了无法切换&#xff0c;都不知道该怎么办了&#xff0c;这个小问题也是常有的&#xff0c;那么win10更新后不能切换输入法怎么办呢&#xff0c;下面小编给大家分享win10输入法切换不了的解决方法。 …

解决Java8 分组groupingBy 后排序不变的问题

在工作中遇到了java8 Stream groupBy 分组排序失效的问题 在此记录一下解决方案 预期效果&#xff1a; 按照年纪倒序并分组 实际结果&#xff1a;返回的数据是杂乱无章&#xff0c;并没有按照年纪倒序 示例代码如下&#xff1a; import java.util.Comparator; import java.u…