最新!Java8 中获取当前时间,一行代码Java判断闰年,日期处理。LocalDateTime的详细使用,DateTimeFormatter使用。

您所在的位置:网站首页 用java编写闰年判断的方法 最新!Java8 中获取当前时间,一行代码Java判断闰年,日期处理。LocalDateTime的详细使用,DateTimeFormatter使用。

最新!Java8 中获取当前时间,一行代码Java判断闰年,日期处理。LocalDateTime的详细使用,DateTimeFormatter使用。

2024-07-16 02:04:18| 来源: 网络整理| 查看: 265

文章目录 1. 格式化日期和时间使用 DateTimeFormatter(Java8)2. 获取当前日期的方法2.1 System.currentTimeMillis()2.2 java.util.Date2.3 Calendar API2.4 Java8 的 Time API(优先使用,重要!)LocalDate(第 4 点判断闰年)LocalTimeLocalDateTime 小结(Java 8 中轻松格式化日期和时间的API)

1. 格式化日期和时间使用 DateTimeFormatter(Java8)

提示:在讲时间获取之前,我们先了解下格式化日期和时间的类 DateTimeFormatter 和 SimpleDateFormat

首先说明:请优先使用 DateTimeFormatter !具体代码实现可看末尾小结。原因如下:

具有线程安全性:DateTimeFormatter 是线程安全的, SimpleDateFormat 非线程安全。

类型支持多:DateTimeFormatter 支持多种日期和时间类型,例如 LocalDate、LocalTime、LocalDateTime等。SimpleDateFormat 只支持 Date 类型。

解析能力强:DateTimeFormatter 可以将字符串解析为日期和时间类型, SimpleDateFormat 不支持解析。

本地化支持:DateTimeFormatter 支持本地化。SimpleDateFormat 虽然也支持本地化,但使用起来相对麻烦。

更多详情对比可参照:链接

2. 获取当前日期的方法 单纯查询用法可直接跳到最后 Java8 的TimeAPI的方法,优先推荐使用。 2.1 System.currentTimeMillis()

此方法会根据我们的系统时间返回当前值。这是基于底层的api,但是实际开发中谨慎使用,不管是单线程还是多线程下,在高并发下高频的调用System.currentTimeMillis()都会产生延迟,需要更深层次的处理。

System.out.println("currentTimeMillis=="+System.currentTimeMillis()); // 看输出可知此方法输出的是时间戳,所以需要转化 Date date1 = new Date(System.currentTimeMillis()); // 格式化时间工具类 SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("currentTime=="+formatter.format(date1)); currentTimeMillis==1712542238241 currentTime==2024-04-08 10:10:38 2.2 java.util.Date

获取当前日期最简单的方法之一就是直接实例化位于 Java 包 java.util 的 Date 类。

Date date2 = new Date(); SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("Date=="+formatter.format(date2)); Date==2024-04-08 10:25:40

也可以直接简化为一行代码:

String testDate2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date2);

这里其实就能明显看出,结果是字符串,如果我们要年月信息的话,可以截取:

System.out.println("年月=="+testDate2.substring(0,4)+"年"+testDate2.substring(5,7)+"月"); 年月==2024年04月 2.3 Calendar API

还有没有更优雅的获取年月的方法呢? Calendar 类,专门用于转换特定时刻和日历字段之间的日期和时间。 使用 Calendar 获取当前日期和时间非常简单:

Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); System.out.println("当前年份:" + year); int month = cal.get(Calendar.MONTH); System.out.println("当前月份:"+month); System.out.println("当前时间:"+cal.getTime()); 当前年份:2024 当前月份:3 当前时间:Mon Apr 08 10:36:12 CST 2024 2.4 Java8 的 Time API(优先使用,重要!)

提示:最后,我们讲讲本篇的重点, JAVA 8 提供的Time API

Java 8 提供了一个全新的 API,用以替换 java.util.Date 和 java.util.Calendar。Date / Time API 提供了多个类,帮助我们来完成工作,包括: LocalDate ----- LocalTime ----- LocalDateTime ----- ZonedDateTime

为何要用 Java 8 的新API?

线程安全 - Date 和Calendar类不是线程安全的,使开发者难以调试这些api的并发问题,需要编写额外的代码来处理线程安全。Java 8中引入的新的Date和Time API是不可变的和线程安全的,使得这些痛点得以解决。 API设计和易于理解 - 旧的时间api非常难以理解,操作都非常复杂,非常绕口,没有提供一些常用的解析转换方法。新的时间API是以ISO为中心的,并遵循 date, time, duration 和 periods的一致域模型。提供了一些非常实用方法以支持最常见的操作。不再需要我们自己封装一些时间操作类。 ZonedDate和Time - 在旧的时间api中开发人员必须编写额外的逻辑来处理旧API的时区逻辑,而使用新的API,可以使用 Local和ZonedDate / Time API来处理时区。无需过多关心时区转换问题。

最常用的类是LocalDate(只有日期),LocalTime(只有时间)和LocalDateTime(日期时间都有)。正如他们的名字所示,它们代表与上下文相结合的本地日期/时间。

LocalDate(第 4 点判断闰年)

LocalDate表示在ISO格式(YYYY-MM-DD)下的不带具体时间的日期。

LocalDate localDate = LocalDate.now(); System.out.println("localDate==="+localDate.getYear()); localDate===2024

也可以指定日期年月日,使用“ of ”方法或使用“ parse ”方法获得:

LocalDate localDate1 = LocalDate.of(2015, 02, 20); LocalDate localDate2 = LocalDate.parse("2015-02-20"); System.out.println("localDate1==="+localDate1); System.out.println("localDate2==="+localDate2); localDate1===2015-02-20 localDate2===2015-02-20

是不是非常直观而且方便!LocalDate还提供各种实用方法,以获得各种日期信息。让我们快速浏览一下这些API方法:

获取当前本地日期并添加一天: LocalDate tomorrow = LocalDate.now().plusDays(1); System.out.println("tomorrow==="+tomorrow); tomorrow===2024-04-09 获取当前日期并减去一个月。请注意它是如何接受枚举作为时间单位的: LocalDate lastMonthSameDay= LocalDate.now().minus(1, ChronoUnit.MONTHS); System.out.println("lastMonthSameDay==="+lastMonthSameDay); previousMonthSameDay===2024-03-08 分别获取星期几和月中的某天。注意返回值 DayOfWeek weekday = LocalDate.parse("2024-04-08").getDayOfWeek(); int eight = LocalDate.parse("2024-04-08").getDayOfMonth(); System.out.println("weekday===="+weekday+'\n'+"eight==="+eight); weekday====MONDAY eight===8 我们可以测试一个日期是否发生在闰年,非常简单!一行搞定,如果用老方法怕不是要上天 boolean leapYear = LocalDate.now().isLeapYear(); // 当然也可以指定日期 boolean leapYear2 = LocalDate.parse("2027-04-08").isLeapYear(); 获取日期边界,给定日期的开始时间 LocalDateTime 和代表月初的 LocalDate LocalDateTime beginningOfDay = LocalDate.parse("2024-04-08").atStartOfDay(); LocalDate firstDayOfMonth = LocalDate.parse("2024-04-08") .with(TemporalAdjusters.firstDayOfMonth()); System.out.println("beginningOfDay===="+beginningOfDay+'\n'+"firstDayOfMonth==="+firstDayOfMonth); beginningOfDay====2024-04-08T00:00 firstDayOfMonth===2024-04-01 判断日期的先后: boolean notBefore = LocalDate.parse("2016-06-12").isBefore(LocalDate.parse("2016-06-11")); boolean isAfter = LocalDate.parse("2016-06-12").isAfter(LocalDate.parse("2016-06-11"));

怎么样,是不是非常的方便,真的非常不错👍接下来我们看看LocalTime

LocalTime

LocalTime表示不带日期的时间。 与LocalDate类似,可以从系统时钟或使用“parse”和“of”方法创建LocalTime实例。快速浏览下面的一些常用API。

创建LocalTime实例 LocalTime sixThirtyByParse = LocalTime.parse("06:30"); LocalTime sixThirtyByOf = LocalTime.of(6, 30); 使用“plus”API为其添加一小时。 LocalTime sevenThirty = LocalTime.parse("06:30").plus(1, ChronoUnit.HOURS); 各种getter方法可用于获取特定的时间单位,如小时,分钟和秒,如下所示获取小时: int hour = LocalTime.parse("06:30").getHour(); 同LocalDate一样检查特定时间是否在另一特定时间之前或之后。 boolean isbefore = LocalTime.parse("06:30").isBefore(LocalTime.parse("07:30")); 一天中的最大,最小和中午时间可以通过LocalTime类中的常量获得。 在执行数据库查询以查找给定时间范围内的记录时,这非常有用。例如,下面的代码代表23:59:59.99 LocalTime maxTime = LocalTime.MAX;

接下来,让我们了解下LocalDateTime吧

LocalDateTime

由名称所述,LocalDateTime用于表示日期和时间的组合。 当我们需要结合日期和时间时,这是最常用的类。该类提供了各种API,我们将介绍一些最常用的API。

类似于LocalDate和LocalTime从系统时钟获取LocalDateTime的实例,以及使用工厂“of”和“parse”方法创建实例: LocalDateTime localDateTime = LocalDateTime.now(); LocalDateTime.of(2015, Month.FEBRUARY, 20, 06, 30); LocalDateTime.parse("2015-02-20T06:30:00"); 有一些实用的API可以支持特定时间单位的时间运算,以下代码示例演示了“加”和“减”方法的用法。这些API的行为与LocalDate和LocalTime中的 API完全相同: localDateTime.plusDays(1); localDateTime.minusHours(2); Getter方法: localDateTime.getMonth(); 小结(Java 8 中轻松格式化日期和时间的API)

提示:这里可以添加总结

好了,今天写的够多了,这次的内容就先到这里,后续会提到

ZonedDateTime API的使用,用于处理时区特定的日期和时间。Period和Duration,Period 用于计算两个日期(年月日)间隔。 Duration 用于计算两个时间(秒,纳秒)间隔。Java 8 中对日期(Date类型)和日历(Calendar类型)的兼容和转化Java 8 中轻松格式化日期和时间的 API,代码先贴下面: String localDateString = localDateTime.format(DateTimeFormatter.ISO_DATE); localDateTime.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")); localDateTime .format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) .withLocale(Locale.UK); 以及Java 8 Core Date / Time API 可用的替代方案。 写了后会将链接贴到此处:链接


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭