Java日期比较大小的3种方式及拓展

news/2024/12/2 21:02:58/

目录

一、字符串String的日期比较

二、数值型long比较

三、日期型Date直接比较

四、Date型日期的获取方式

五、Calendar获取年月日【拓展】


一、字符串String的日期比较

String型的日期通过compareTo()来比较,因为String实现了comparable接口

  • endDate.compareTo(startDate) 结果>0 说明前者 晚于 后者

String型日期(获取今天/系统当前时间)

获取今天当前时间,精确到

String today= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());

如果获取当前时间要 精确到毫秒 的话,仅需要String today= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS").format(new Date());即可比较示例

String startDate="2020-11-13 00:00:00";//当前时间endDate 是2020-11-14 09:52:41
String endDate= new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date());
// return 1
System.out.println(endDate.compareTo(startDate));

返回结果是1,即 endDate>startDate

String日期比较要注意

  • 比较的字符串格式要一致,yyyy-MM-dd hh:mm:ssyyyyMMddhhmmss 格式是不一样的,这么比较结果肯定不对

二、数值型long比较

获取long型的今日/系统当前时间

数值型(long型)日期的获取方式主要有2个:

  • long time=System.currentTimeMillis() 获取系统当前时间,精确到毫秒
  • long today= Date.getTime(),即通过Date型日期调用getTime()方法获取,精确到毫秒

如果只需要精确到秒的话,大可用别的比较方式

String startDate="2020-11-13 00:00:00";
String endDate= "2020-11-14 23:59:59";
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try{Date date01=simpleDateFormat.parse(startDate);Date date02=simpleDateFormat.parse(endDate);// 精确到毫秒long milliSecond01=date01.getTime();long milliSecond02=date02.getTime();// trueSystem.out.println(milliSecond02 > milliSecond01);
}catch (Exception e){}

三、日期型Date直接比较

日期型Date的比较通过before()和after()来完成,返回值均为boolean

  • before(Date when) :在指定日期when 之前
  • after(Date when) :在指定日期when 之后
String startDate="2020-11-13 00:00:00";
String endDate= "2020-11-14 23:59:59";
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try{Date date01=simpleDateFormat.parse(startDate);Date date02=simpleDateFormat.parse(endDate);// true , 11-13号 在 11-14号 之前 System.out.println(date01.before(date02));
}catch (Exception e){}

四、Date型日期的获取方式

1、Date date=new Date()

2、Calendar获取Date日期

//获取日历实例
Calendar calendar=Calendar.getInstance();
Date date=calendar.getTime();

返回的Date日期精确到了 毫秒

五、Calendar获取年月日【拓展】

Calendar calendar=Calendar.getInstance();
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH)+1;
int day=calendar.get(Calendar.DATE);
int hour=calendar.get(Calendar.HOUR_OF_DAY);
int minute=calendar.get(Calendar.MINUTE);
int second=calendar.get(Calendar.SECOND);
System.out.println("当前时间:"+year+"年 "+month+"月 "+day+"日 "+hour+"时 "+minute+"分 "+second+"秒");

calendar.get(Calendar.MONTH)拿到的是上一个月,要拿到这个月得+1

原文链接:https://blog.csdn.net/qq_44384533/article/details/109689598


http://www.ppmy.cn/news/1196673.html

相关文章

医学影像处理系统源码(PACS)

通用医学图像处理平台覆盖全模态、多维度临床应用,助力提供医学图像分析的全景高清视角,赋能临床精准诊断。 一、PACS覆盖CT、MR、MI等多模态影像及心血管、肿瘤、神经等多临床场景,助力医生精准高效诊断。 二、临床应用 1.基础应用 &#…

Prompt 设计与大语言模型微调,没有比这篇更详细的了吧!

本文主要介绍了Prompt设计、大语言模型SFT和LLM在手机天猫AI导购助理项目应用。 ChatGPT基本原理 “会说话的AI”,“智能体” 简单概括成以下几个步骤: 预处理文本:ChatGPT的输入文本需要进行预处理。 输入编码:ChatGPT将经过预…

【深度学习】Yolov8 区域计数

ref:https://github.com/ultralytics/ultralytics/blob/main/examples/YOLOv8-Region-Counter/readme.md 很长时间没有做yolov的项目了,最近一看yolov8有一个区域计数的功能,不得不说很实用啊。

职场被迫内卷,云认证破局

前言: 2023年作为疫情全面放开的第一年,经济并没有像22年底时我们想象的那样,快速复苏,GDP增长超10%。取而代之的是,2023年经济大环境对各个行业来说,相比22年显的更加艰难,GDP增长预计在5%左右…

Java 正则表达式字符篇

精确匹配一个字符 精确匹配字符串 abc , //精确匹配字符串 "abc"String regexabc "abc";System.out.println("abc".matches(regexabc));// trueSystem.out.println("ABC".matches(regexabc));// falseSystem.out.println…

python爬虫实战——今日头条新闻数据获取

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 第三方库: requests >>> pip install requests 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你…

vSLAM中IMU预积分的作用--以惯性导航的角度分析

作为一个学过一点惯导的工程师,在初次接触视觉slam方向时,最感兴趣的就是IMU预积分了。但为什么要用这个预积分,在看了很多材料和书后,还是感觉模模糊糊,云里雾里。 在接触了vSLAM的更多内容后,站在历史研究…

Go基础——接口、并发

1、接口 Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。接口可以让不同的类型绑定到一组公共的方法上,从而实现多态和灵活的设计。Go 语言中的接口是隐式实现…