Java日期处理那点事儿(附词破阵子)

2019-01-05  本文已影响6人  李逍遥2018
       **破阵子.为程序员赋壮词以寄**

醉里挑灯按键,梦回开机编程。
八千行分成函数,五十类遥相呼应,煮酒论英雄。
键盘敲得飞快,鼠标连击铮鸣。
了却项目烂尾事,赢得客户多好评。幸白发未生。

​ 先风骚地赋词一首,然后给大家抛出一个貌似极其容易的问题,如何把"03 29 2018 10:08AM"转成Date类型?我想很多朋友对此嗤之以鼻,不屑一顾。但不服来辩,- -!自己动手写一个试试,看看能不能转成功?

​ java里经常会遇到日期时间处理的问题,这类问题主要包括日期转字符串、字符串转日期、日期计算、判断星期几、日期往前、往后推几天等,这类问题可能会令初学者手忙脚乱,一通百度。其实这类问题归纳后,通过SimpleDateFormat 和Calendar这两个类主要几个api即可解决,接下来就和大家一起看一下这两个类的常见用法。

一、SimpleDateFormat类的用法

​ SimpleDateFormat主要用途有二,一是通过其format(Date date)方法将任意java.util.Date按照指定的格式转化成String字符串,二是通过其parse(String datestr)将时间格式的字符串转化成java.util.Date.

1.1 Date转成字符串

​ 这种场景一般用来按照格式要求显示日期时间,示例代码如下

Date currentDate = new Date();
System.out.println("直接打印date是不爽的--->:" + currentDate);
format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println("按12小时制格式化显示--->:" + format.format(currentDate));
format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("按24小时制格式化显示--->:" + format.format(currentDate));
运行结果如下:
直接打印date是不爽的--->:Sat Jan 05 23:10:40 CST 2019
按12小时制格式化显示--->:2019-01-05 11:10:40
按24小时制格式化显示--->:2019-01-05 23:10:40

1.2 字符串转换成Date类型

​ 这种场景是把字符串格式的时间(如前端日期控件的值),转换成Date类型,进行运算或处理(比如日期比较),示例代码如下

String test = "2018-12-31 08:10:32";
format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date testDate = format.parse(test);
System.out.println("testDate--->:" + testDate);

​ 运行结果如下:

testDate--->:Mon Dec 31 08:10:32 CST 2018

1.3 Date的比较运算

​ 第一种方法,用after(Date date)方法比较,示例代码如下

Date date1 = new Date();
Date date2 = new Date();
if(date2.after(date1))
{
    System.out.println("date2当然比date1大了");
}

​ 第二种方法,用compareTo(Date date)方法,示例代码如下

Date date1 = new Date();
Date date2 = new Date();
int flag = date1.compareTo(date2);

​ flag是比较结果,它有3个数值-1,0,1。如果是0表示两个日期相等;如果是-1,表示date1小;如果是1,表示date1大。

​ 第三种方法,转化成毫秒数比较,示例代码如下

long long1 = date1.getTime();
long long2 = date2.getTime();
if(long1 > long2)
{
    System.out.println("不服就比比谁大!");
}

1.4 小结

​ 亲!你会用了吧!那么文章开头提出的那个问题,你能解决了吗?嘿嘿!试试就知道恐怕还是不行!因为日期时间的格式太多了,全世界各地各不相同,因此那个问题还得想想办法!想知道正确的答案吗?赶紧给哥点赞去,没赞哥都没动力写答案了!- -!

二、Calendar类的用法

​ Calendar类很好很强大,主要用于日期的计算,这里我给大家写一个日期往后推3天的例子,道理都是相通的,相信大家能举一反三!代码如下

Date myDate = new Date();
System.out.println("myDate--->:" + myDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(myDate);
calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + 3);
Date afterDate = calendar.getTime();
System.out.println("after--->:" + afterDate);

​ 结果如下

myDate--->:Sat Jan 05 09:09:42 CST 2019
after--->:Tue Jan 08 09:09:42 CST 2019
上一篇下一篇

猜你喜欢

热点阅读