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 位

总结

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

相关文章

  • java中实体类和JSON对象之间相互转化

    java中实体类和JSON对象之间相互转化

    Java中关于Json格式转化Object,Map,Collection类型和String类型之间的转化在我们实际项目中应用的很是普遍和广泛。最近工作的过程中也是经常有,因此,自己封装了一个类分享给大家。
    2015-05-05
  • 通过实例解析java过滤器和拦截器的区别

    通过实例解析java过滤器和拦截器的区别

    这篇文章主要介绍了通过实例解析java过滤器和拦截器的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java中的LinkedHashMap详解

    Java中的LinkedHashMap详解

    这篇文章主要介绍了Java中的LinkedHashMap详解,LinkedHashMap继承自HashMap,它的多种操作都是建立在HashMap操作的基础上的,同HashMap不同的是,LinkedHashMap维护了一个Entry的双向链表,保证了插入的Entry中的顺序,需要的朋友可以参考下
    2023-09-09
  • Java雪花算法的原理和实现方法

    Java雪花算法的原理和实现方法

    这篇文章主要介绍了Java雪花算法的原理和实现方法,雪花算法是一种分布式唯一ID生成算法,可以生成全局唯一的ID标识符,就像自然界中雪花一般没有相同的雪花,下面将详细介绍,感兴趣的可以学习一下
    2023-10-10
  • Struts1简介和入门_动力节点Java学院整理

    Struts1简介和入门_动力节点Java学院整理

    这篇文章主要为大家详细介绍了Struts1简介和入门的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 基于dubbo中Listener的实现方法

    基于dubbo中Listener的实现方法

    下面小编就为大家带来一篇基于dubbo中Listener的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Java结构型设计模式中建造者模式示例详解

    Java结构型设计模式中建造者模式示例详解

    建造者模式,是一种对象构建模式 它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现的对象。本文将通过示例讲解建造者模式,需要的可以参考一下
    2022-09-09
  • 使用java.nio.file 库优雅的操作文件详解

    使用java.nio.file 库优雅的操作文件详解

    这篇文章主要介绍了使用java.nio.file 库优雅的操作文件详解,需要的朋友可以参考下
    2023-05-05
  • Java AQS(AbstractQueuedSynchronizer)源码解析

    Java AQS(AbstractQueuedSynchronizer)源码解析

    AbstractQueuedSynchronizer被称为队列同步器,简称为大家熟知的AQS,这个类可以称作concurrent包的基础。本文将通过剖析源码来看看AQS是如何工作的,感兴趣的可以了解一下
    2023-02-02
  • 基于RecyclerChart的KLine绘制详解

    基于RecyclerChart的KLine绘制详解

    这篇文章主要为大家详细介绍了基于RecyclerChart实现KLine绘制的相关资料,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03

最新评论