java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > java Date日期类型的大小比较

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

作者:程序猿(攻城狮)

这篇文章主要介绍了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’则是一个表达式,在这里表示多少分多少秒

结果

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

总结

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

您可能感兴趣的文章:
阅读全文