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

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

LocalDateTime类

Java8以前, Date、Calendar,DateFormat 等组成的「传统时间日期 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:时钟,比如获取目前美国纽约的时间

LocalDateTime类里包含了LocalDate与LocalTime类

 /*** 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,其中重点需要了解的是LocalDateTime的of方法
在IDEA里我们可以看到有七种声明,既可以利用LocalDate与LocalTime来初始化时间,也可以用自定义时间
如LocalDateTime.of(2020, 01, 01, 00, 00, 00);

我们选择的是利用LocalDate与LocalTime来初始化。
LocalDate内的静态方法now()的定义如下

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

用LocalDate.now()就可以返回默认区域中最佳可用系统时钟的时钟。
而LocalTime的成员变量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);}

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

获取当月第一天

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

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

/*** Returns a copy of this {@code LocalDate} with the day-of-month altered.* <p>* If the resulting date is invalid, an exception is thrown.* <p>* 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);}

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

LocalDateTime类获取当日00:00与当月第一天相关推荐

  1. LocalDateTime获取当日00:00、结束时间23.59与当月第一天00.00,月末最后一天23.59

    LocalDateTime获取当日00:00.结束时间23.59与当月第一天00.00,月末最后一天23.59 localDdate格式为字符串 //localDateTime格式为字符串DateTi ...

  2. MySQL 常见时间获取整理(当日、当月、当年、上一日、上一月、上一年,当月第一天,当年第一天等等)

    MySQL 常见时间获取整理(当日.当月.当年.上一日.上一月.上一年,当月第一天,当年第一天等等) 当前时间 SELECT now(); //当前时间,格式2020-09-02 16:00:02 S ...

  3. Java 8 获取某天最大(23:59:59)最小(00:00:00)时间

    Java 8 中获取某一天最大时间和最小时间如下: import java.text.SimpleDateFormat; import java.time.Instant; import java.t ...

  4. Java获取当天或者明天等零点时间(00:00:00)0时0分0秒的方法

    SimpleDateFormat sdfYMD = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar calendar = ...

  5. 实现计时、时钟,实时获取当前年月日时分秒,记录时间(获取当前的时间,开始计时,计时过程相当于你的电脑时钟)0000年00月00日 00:00:00

    <!doctype html> <html lang="en"> <head><meta charset="UTF-8" ...

  6. Android --- 数据库存储的是正确的时间格式(2021-06-17 21:47:23)但是在获取的时候变成了(2021-06-17T13:47:23.000+00:00)

    问题描述: 数据库存储的是正确的时间格式(2021-06-17 21:47:23)但是在获取的时候变成了(2021-06-17T13:47:23.000+00:00) 重点: 我们发现获取到的时间跟原 ...

  7. 实例:输入一个时间值s,它是距离当日午夜的秒值,计算目前的时间,时间按00:00:00格式输出

    实例:输入一个时间值s,它是距离当日午夜的秒值,计算目前的时间,时间按00:00:00格式输出 代码如下: # 计算时间的程序 s = int(input("请输入秒值:")) # ...

  8. # c语言版:实例:输入一个时间值s,它是距离当日午夜的秒值,计算目前的时间,时间按00:00:00格式输出

    c语言版:实例:输入一个时间值s,它是距离当日午夜的秒值,计算目前的时间,时间按00:00:00格式输出 前言:c语言版本 对于c语言的基础复习 对于if选择判断语句的理解 浮点型输出 提示:以下是本 ...

  9. 获取当日/当月的时间段——js(技能提升)

    今天遇到一个需求,要展示当日/当月的表格数据,支持当日和当月时间的选择. 获取当日的时间--年月日格式 getDataString(date){var year = date.getFullYear( ...

最新文章

  1. 4412 GPIO读 和 ioremap控制GPIO寄存器
  2. Redis数据库(三)——(主从复制、哨兵模式、集群)
  3. ASPNET Core 2.x中的Kestrel服务器
  4. Entityframework Code First 系列
  5. hibernate环境搭建
  6. 数据结构与算法(四)-线性表之循环链表
  7. “产品助理最重要的工作是 Android 版本的设计与测试”
  8. Google地图接口API之Google地图 API 参考手册(七)
  9. 由DispatcherServlet看spring mvc请求处理过程
  10. 人人商城源码怎么安装MySQL_人人商城12个常见错误解决方案
  11. c语言不合法字符串常量,不合法的字符常量是什么
  12. python 调用matlab 数据类型问题
  13. 教师资格考试科目二 word Exele ppt 应用
  14. Game boy模拟器(3):GPU的时序
  15. 为什么你做数据分析没思路?
  16. matlab结构力学仿真,MATLAB在结构力学分析中应用.doc
  17. 青龙羊毛——酷狗音乐(教程)
  18. ssh mysql jsp码头船只出行及配套货柜码放管理系统的设计与实现
  19. 用于私网的IP地址段
  20. 如何成为别人嘴里的高级前端工程师?

热门文章

  1. Citespace使用教程2
  2. 【杂文】一些好玩的函数
  3. 双向循环链表、dancing links
  4. vue el-table表格数据编辑,取消编辑数据还原,批量提交编辑修改数据
  5. CVPR2021小目标检测:上下文和注意力机制提升小目标检测
  6. 使用shell遍历文件夹下的所有图片,并复制一定数量的到新建的子文件夹中
  7. 中国电动压缩机行业市场研究与预测报告(2023版)
  8. 2018吉大计算机学院复试线,2018年吉林大学考研复试分数线已公布
  9. 用Linux命令行获取本机外网IP地址
  10. Bioinformatics Armory第1题:Introduction to the Bioinformatics Armory