首页 >> 大全

LocalDateTime类获取当日00:00与当月第一天

2023-07-31 大全 28 作者:考证青年

类获取当日00:00与当月第一天

Java8以前, Date、, 等组成的「传统时间日期 API」,但是传统的处理接口设计并不是很友好,不易使用。终于,Java 8 借鉴第三方优秀开源库 Joda-time,重新设计了一套 API。这就是java.time包。

在java8中,java.time包下主要包含下面几个主要的类:

Instant:时间戳
Duration:持续时间,时间差
LocalDate:只包含日期,比如:2016-10-20
LocalTime:只包含时间,比如:23:12:10
LocalDateTime:包含日期和时间,比如:2016-10-20 23:14:21
Period:时间段
ZoneOffset:时区偏移量,比如:+8:00
ZonedDateTime:带时区的时间
Clock:时钟,比如获取目前美国纽约的时间

类里包含了与类

	/*** The date part.*/private final LocalDate date;/*** The time part.*/private final LocalTime time;

获取当日00:00

LocalDateTime today_start = LocalDateTime.of(LocalDate.now(),LocalTime.MIN);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println(df.format(today_start));

上述代码成功获取了当日的00:00,其中重点需要了解的是的of方法

在IDEA里我们可以看到有七种声明,既可以利用与来初始化时间,也可以用自定义时间

如.of(2020, 01, 01, 00, 00, 00);

我们选择的是利用与来初始化。

内的静态方法now()的定义如下

public static LocalDate now() {return now(Clock.systemDefaultZone());}

用.now()就可以返回默认区域中最佳可用系统时钟的时钟。

获取当天日期_获取当前日期的后一天_

而的成员变量MIN的定义如下

	/*** The minimum supported {@code LocalTime}, '00:00'.* This is the time of midnight at the start of the day.*/public static final LocalTime MIN;/*** The maximum supported {@code LocalTime}, '23:59:59.999999999'.* This is the time just before midnight at the end of the day.*/public static final LocalTime MAX;static {for (int i = 0; i < HOURS.length; i++) {HOURS[i] = new LocalTime(i, 0, 0, 0);}MIDNIGHT = HOURS[0];NOON = HOURS[12];MIN = HOURS[0];MAX = new LocalTime(23, 59, 59, 999_999_999);}

在内,MIN与MAX被初始化为00:00与23:59:59.。

获取当月第一天

		LocalDate thisMonth = LocalDate.now();LocalDate firstDayThisMonth = LocalDate.now().withDayOfMonth(1);DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd");System.out.println(df.format(firstDayThisMonth));

那么这段代码内最核心的就是.(1)这个方法了,下面我们来看看内关于它的声明。

/*** Returns a copy of this {@code LocalDate} with the day-of-month altered.* 

* If the resulting date is invalid, an exception is thrown.*

* This instance is immutable and unaffected by this method call.** @param dayOfMonth the day-of-month to set in the result, from 1 to 28-31* @return a {@code LocalDate} based on this date with the requested day, not null* @throws DateTimeException if the day-of-month value is invalid,* or if the day-of-month is invalid for the month-year*/public LocalDate withDayOfMonth(int dayOfMonth) {if (this.day == dayOfMonth) {return this;}return of(year, month, dayOfMonth);}

该方法的返回值是一个用来替换原本day的一个副本。

于是得到当月第一天的方法如下:首先我们利用now()获取当前时钟的year与month,最后用我们传进去的来替换当前的day。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了