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 位

总结

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

相关文章

  • JavaFX实现简易时钟效果

    JavaFX实现简易时钟效果

    这篇文章主要为大家详细介绍了JavaFX实现简易时钟效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Java中的日期和时间类以及Calendar类用法详解

    Java中的日期和时间类以及Calendar类用法详解

    这篇文章主要介绍了Java中的日期和时间类以及Calendar类用法详解,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • Log4j日志分类和过滤敏感字段的实例

    Log4j日志分类和过滤敏感字段的实例

    这篇文章主要介绍了Log4j日志分类和过滤敏感字段的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • MyBatis SpringMVC整合实现步骤详解

    MyBatis SpringMVC整合实现步骤详解

    这篇文章主要介绍了MyBatis SpringMVC整合实现步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • java使用jdbc链接Oracle示例类分享

    java使用jdbc链接Oracle示例类分享

    本文为大家提供一个java使用jdbc链接Oracle的示例类,大家参考使用吧
    2014-01-01
  • java-流的使用完结与异常处理机制(详解)

    java-流的使用完结与异常处理机制(详解)

    下面小编就为大家带来一篇java-流的使用完结与异常处理机制(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Spring boot集中异常处理方法实例

    Spring boot集中异常处理方法实例

    这篇文章主要介绍了Spring boot集中异常处理方法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Mybatis批量插入Oracle数据的方法实例

    Mybatis批量插入Oracle数据的方法实例

    在开发中或多或少都会遇到数据批量插入的功能,最近我在做项目的过程中就遇到了这样一个问题,下面这篇文章主要给大家介绍了关于Mybatis批量插入Oracle数据的相关资料,需要的朋友可以参考下
    2022-01-01
  • @Async导致controller 404及失效原因解决分析

    @Async导致controller 404及失效原因解决分析

    这篇文章主要为大家介绍了@Async导致controller 404失效问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • SpringBoot使用Redis对用户IP进行接口限流的示例详解

    SpringBoot使用Redis对用户IP进行接口限流的示例详解

    使用接口限流的主要目的在于提高系统的稳定性,防止接口被恶意打击,这篇文章主要介绍了SpringBoot使用Redis对用户IP进行接口限流的示例代码,需要的朋友可以参考下
    2023-07-07

最新评论