java中Date日期类型的大小比较方式

 更新时间:2023年07月15日 10:22:01   作者:程序猿(攻城狮)  
这篇文章主要介绍了java中Date日期类型的大小比较方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

java Date日期类型的大小比较

通过Date提供的compareTo()进行比较

java.util.Date类实现了Comparable接口,可以直接调用Date的compareTo()方法来比较大小

String beginTime = "2018-07-28 14:42:32";
String endTime = "2018-07-29 12:26:32";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    Date date1 = format.parse(beginTime);
    Date date2 = format.parse(endTime);
    int compareTo = date1.compareTo(date2);
    System.out.println(compareTo);
} catch (ParseException e) {
    e.printStackTrace();
}

compareTo()方法的返回值,date1小于date2返回-1,date1大于date2返回1,相等返回0

通过Date自带的before()或者after()方法比较

String beginTime = "2018-07-28 14:42:32";
String endTime = "2018-07-29 12:26:32";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    Date date1 = format.parse(beginTime);
    Date date2 = format.parse(endTime);
    boolean before = date1.before(date2);
    System.out.println(before);
} catch (ParseException e) {
    e.printStackTrace();
}

before()或者after()方法的返回值为boolean类型。

通过调用Date的getTime()方法获取到毫秒数来进行比较

String beginTime = "2018-07-28 14:42:32";
String endTime = "2018-07-29 12:26:32";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
    Date date1 = format.parse(beginTime);
    Date date2 = format.parse(endTime);
    long beginMillisecond = date1.getTime();
    long endMillisecond = date2.getTime();
    System.out.println(beginMillisecond > endMillisecond);
} catch (ParseException e) {
    e.printStackTrace();
}

java中常用的Date类型

java常用的日期类估计就是Date类

当我们新建一个Date对象并打印时,输出是这样的

Date date =new Date();
 //Sat Apr 07 23:12:52 CST 2018
System.out.println(date);

Sat是星期六,Apr是月份,CST是时区

当我们对输出格式有要求时,会用到SimpleDateFormat这个类

用法大概是这样

Date dNow = new Date( );
SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
//Current Date: 星期六 2018.04.07 at 11:20:26 下午 CST
System.out.println("Current Date: " + ft.format(dNow));

至于它为什么会选择中文,这是跟你的操作系统设置的语言有关系的,因为我们的操作系统平常就是中文

这里关键的就是

"E yyyy.MM.dd 'at' hh:mm:ss a zzz"

这就是一个表达式

顺便贴出其他常用的表达符号及其含义

/**
  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符 
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区
 */

在一些常用的数据库中也有对于时间的方法

如(mysql)数据库中有个类型是datetime类型

CREATE TABLE `timetest` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `t` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

可以使用now()方法插入当前的时间

insert into timetest VALUES(null,now());

结果如下

也可用DATE_FORMAT方法进行特定的查找

比如在上面那个表查id=1的那条记录

select *from timetest where DATE_FORMAT(t,'%i:%s')='51:54';

上面那个t是指要查找的列名,‘%i:%s’则是一个表达式,在这里表示多少分多少秒

结果

下面也给出一些常用的数据库表达式

  • %a 缩写星期名
  • %b 缩写月名
  • %c 月,数值
  • %D 带有英文前缀的月中的天
  • %d 月的天,数值(00-31)
  • %e 月的天,数值(0-31)
  • %f 微秒
  • %H 小时 (00-23)
  • %h 小时 (01-12)
  • %I 小时 (01-12)
  • %i 分钟,数值(00-59)
  • %j 年的天 (001-366)
  • %k 小时 (0-23)
  • %l 小时 (1-12)
  • %M 月名
  • %m 月,数值(00-12)
  • %p AM 或 PM
  • %r 时间,12-小时(hh:mm:ss AM 或 PM)
  • %S 秒(00-59)
  • %s 秒(00-59)
  • %T 时间, 24-小时 (hh:mm:ss)
  • %U 周 (00-53) 星期日是一周的第一天
  • %u 周 (00-53) 星期一是一周的第一天
  • %V 周 (01-53) 星期日是一周的第一天,与 %X 使用
  • %v 周 (01-53) 星期一是一周的第一天,与 %x 使用
  • %W 星期名
  • %w 周的天 (0=星期日, 6=星期六)
  • %X 年,其中的星期日是周的第一天,4 位,与 %V 使用
  • %x 年,其中的星期一是周的第一天,4 位,与 %v 使用
  • %Y 年,4 位
  • %y 年,2 位

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Mybatis-plus更新字段为null两种常用方法及优化

    Mybatis-plus更新字段为null两种常用方法及优化

    Mybatis Plus在进行更新操作时,默认情况下是不能将字段更新为null的,如果要更新字段为null,需要进行以下处理,这篇文章主要给大家介绍了关于Mybatis-plus更新字段为null的两种常用方法及优化,需要的朋友可以参考下
    2024-03-03
  • Java数组操作的10大方法

    Java数组操作的10大方法

    下面是精心整理的Java数组操作的10大方法,大部分代码都来自Stack Overflow,需要的朋友可以参考下
    2014-09-09
  • Java中Scanner的常用方法总结(一次学懂)

    Java中Scanner的常用方法总结(一次学懂)

    这篇文章主要给大家介绍了关于Java中Scanner常用方法的相关资料,Java中的Scanner是一个用于读取用户输入的类,它可以读取各种类型的数据,包括整数、浮点数、字符串等等,需要的朋友可以参考下
    2023-11-11
  • SpringBoot请求发送与信息响应匹配实现方法介绍

    SpringBoot请求发送与信息响应匹配实现方法介绍

    这篇文章主要介绍了SpringBoot请求发送与信息响应匹配实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • 基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource)

    基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local

    这篇文章主要介绍了基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 8张图带你全面了解Java kafka的核心机制

    8张图带你全面了解Java kafka的核心机制

    kafka是目前企业中很常用的消息队列产品,可以用于削峰、解耦、异步通信,本文就通过几张图带大家全面认识一下kafka,现在我们不妨带入kafka设计者的角度去思考该如何设计,它的架构是怎么样的、都有哪些组件组成、如何进行扩展等等,需要的朋友可以参考下
    2023-05-05
  • 解析ConcurrentHashMap: transfer方法源码分析(难点)

    解析ConcurrentHashMap: transfer方法源码分析(难点)

    ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment的结构和HashMap类似,是一种数组和链表结构,今天给大家普及java面试常见问题---ConcurrentHashMap知识,一起看看吧
    2021-06-06
  • Java 8中 Stream小知识小技巧方法梳理

    Java 8中 Stream小知识小技巧方法梳理

    这篇文章主要介绍了Java8中Stream小知识小技巧方法梳理,Stream流和迭代器一样,它只能够迭代一次。当它遍历完的时候,我们就称它已经消费完了。如果还想重新执行操作,那么就只能从原来的地方再获取一个流
    2022-09-09
  • Spring Security加密和匹配及原理解析

    Spring Security加密和匹配及原理解析

    我们开发时进行密码加密,可用的加密手段有很多,比如对称加密、非对称加密、信息摘要等,本篇文章给大家介绍Spring Security加密和匹配及原理解析,感兴趣的朋友一起看看吧
    2023-10-10
  • JAVA 根据身份证计算年龄的实现代码

    JAVA 根据身份证计算年龄的实现代码

    这篇文章主要介绍了JAVA 根据身份证计算年龄的实例代码及java根据出生日期获得年龄的方法,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-05-05

最新评论