网站建设dw站点建设,产品vi设计哪家好,公司管理体系,免费申请网站空间及域名参考答案
java.sql.Date 是 java.util.Date 的子类java.util.Date 是 JDK 中的日期类#xff0c;精确到时、分、秒、毫秒java.sql.Date 与数据库 Date 相对应的一个类型#xff0c;只有日期部分#xff0c;时分秒都会设置为 0#xff0c;如#xff1a;2019-10-23 00:00:0…参考答案
java.sql.Date 是 java.util.Date 的子类java.util.Date 是 JDK 中的日期类精确到时、分、秒、毫秒java.sql.Date 与数据库 Date 相对应的一个类型只有日期部分时分秒都会设置为 0如2019-10-23 00:00:00要从数据库时间字段取 时、分、秒、毫秒数据可以使用 java.sql.TimestampJDK1.8 中的日期与时间 API
为什么 JDK 1.8 之前的时间与日期 API 不好用
1、java.util.Date 是从 JDK 1.0 开始提供易用性差 默认是中欧时区(Central Europe Time) 起始年份是 1900 年 起始月份从 0 开始 对象创建之后可修改
2、JDK 1.1 废弃了 Date 中很多方法新增了并建议使用 java.util.Calendar 类 相比 Date 去掉了年份从 1900 年开始 月份依然从 0 开始 选用 Date 或 Calendar让人更困扰
3、DateFormat 格式化时间线程不安全 为了解决 JDK 中时间与日期较难使用的问题JDK 1.8 开始吸收了 Joda-Time 很多功能新增 java.time 包加了新特性 区分适合人阅读的和适合机器计算的时间与日期类 日期、时间及对比相关的对象创建完均不可修改 可并发解析与格式化日期与时间 支持设置不同的时区与历法
LocalDate本地日期LocalTime本地时间LocalDateTime本地日期时间Instant时间戳适合机器时间计算Duration时间差Period年、月、日差ZoneOffset时区偏移量ZonedDateTime带时区的日期时间Clock时钟获取其他地区时钟DateTimeFormatter时间格式化Temporal日期-时间获取值的字段TemporalAdjusteremporal 对象转换实现自定义ChronoLocalDate日历系统接口常用 api
1、 获取当前日期
LocalDate.now() 2、创建日期
LocalDate date LocalDate.of(2020, 9, 21) 3、获取年份
date.getYear()//通过 TemporalField 接口的实现枚举类 ChronoField.YEAR 获取年份
date.get(ChronoField.YEAR) 4、获取月份
date.getMonth().getValue()//通过 TemporalField 接口的实现枚举类 ChronoField.MONTH_OF_YEAR 获取月份
date.get(ChronoField.MONTH_OF_YEAR) 5、获取日
date.getDayOfMonth()//通过 TemporalField 接口的实现枚举类 ChronoField.DAY_OF_MONTH 获取日
date.get(ChronoField.DAY_OF_MONTH) 6、获取周几
date.getDayOfWeek() 7、获取当前月多少天
date.lengthOfMonth() 8、获取当前年是否为闰年
date.isLeapYear() 9、当前时间
LocalTime nowTime LocalTime.now() 10、创建时间
LocalTime.of(23, 59, 59) 11、获取时
nowTime.getHour() 12、获取分
nowTime.getMinute() 13、获取秒
nowTime.getSecond() 14、获取毫秒
nowTime.getLong(ChronoField.MILLI_OF_SECOND) 15、获取纳秒
nowTime.getNano() 16、创建日期时间对象
LocalDateTime.of(2020, 9, 21, 1, 2, 3);
LocalDateTime.of(date, nowTime); 17、获取当前日期时间对象
LocalDateTime.now() 18、通过 LocalDate 创建日期时间对象
date.atTime(1, 2, 3) 19、通过 LocalTime 创建日期时间对象
nowTime.atDate(date) 20、通过 LocalDateTime 获取 LocalDate 对象
LocalDateTime.now().toLocalDate() 21、通过 LocalDateTime 获取 LocalTime 对象
LocalDateTime.now().toLocalTime() 22、解析日期字符串
LocalDate.parse(2020-09-21) 23、解析时间字符串
LocalTime.parse(01:02:03) 24、解析日期时间字符串
LocalDateTime.parse(2020-09-21T01:02:03, DateTimeFormatter.ISO_LOCAL_DATE_TIME) 25、方便时间建模、机器处理的时间处理类 Instant起始时间 1970-01-01 00:00:00
//起始时间 3 秒
Instant.ofEpochSecond(3)
//起始时间 3 秒 100 万纳秒
Instant.ofEpochSecond(3, 1_000_000_000)
//起始时间 3 秒 - 100 万纳秒
Instant.ofEpochSecond(3, -1_000_000_000))
//距离 1970-01-01 00:00:00 毫秒数
Instant.now().toEpochMilli() 26、DurationLocalTime、LocalDateTime、Intant 的时间差处理
Duration.between(LocalTime.parse(01:02:03), LocalTime.parse(02:03:04))
Duration.between(LocalDateTime.parse(2020-09-21T01:02:03), LocalDateTime.parse(2020-09-22T02:03:04))
Duration.between(Instant.ofEpochMilli(1600623455080L), Instant.now()) 27、日期时间前、后、相等比较
//2020-09-21 在 2020-09-18 前
LocalDate.parse(2020-09-21).isBefore(LocalDate.parse(2020-09-18))
//01:02:03 在 02:03:04 后
LocalTime.parse(01:02:03).isAfter(LocalTime.parse(02:03:04)) 28、修改日期、时间对象返回副本
//修改日期返回副本
LocalDate.now().withYear(2019).withMonth(9).withDayOfMonth(9)
LocalDate date4Cal LocalDate.now();
//加一周
date4Cal.plusWeeks(1)
//减两个月
date4Cal.minusMonths(2)
//减三年
date4Cal.minusYears(3) 29、格式化
//格式化当前日期
LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE)
//指定格式格式化当前日期
LocalDate.now().format(DateTimeFormatter.ofPattern(yyyyMMdd))
指定格式格式化当前日期时间
//格式化当前日期时间
LocalDateTime.now().format(DateTimeFormatter.ofPattern(yyyyMMdd HH:mm:ss)) 30、解析
//日期解析
LocalDate.parse(2020-09-20)
//指定格式日期解析
LocalDate.parse(2020/09/20, DateTimeFormatter.ofPattern(yyyy/MM/dd))
//指定格式日期时间解析
LocalDateTime.parse(2020/09/20 01:01:03, DateTimeFormatter.ofPattern(yyyy/MM/dd HH:mm:ss)) 31、时区
//上海时区
ZoneId shanghaiZone ZoneId.of(Asia/Shanghai);
//设置日期为上海时区
LocalDate.now().atStartOfDay(shanghaiZone)
//设置日期时间为上海时区
LocalDateTime.now().atZone(shanghaiZone)
//设置 Instant 为上海时区
Instant.now().atZone(shanghaiZone) 32、子午线时间差
//时间差减 1 小时
ZoneOffset offset ZoneOffset.of(-01:00);
//设置时间差
OffsetDateTime.of(LocalDateTime.now(), offset)