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的,如果要更新字段为null,需要进行以下处理,这篇文章主要给大家介绍了关于Mybatis-plus更新字段为null的两种常用方法及优化,需要的朋友可以参考下2024-03-03基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local
这篇文章主要介绍了基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-08-08解析ConcurrentHashMap: transfer方法源码分析(难点)
ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment的结构和HashMap类似,是一种数组和链表结构,今天给大家普及java面试常见问题---ConcurrentHashMap知识,一起看看吧2021-06-06
最新评论