**破陣子.為程序員賦壯詞以寄**
醉里挑燈按鍵,夢回開機編程。
八千行分成函數,五十類遙相呼應,煮酒論英雄。
鍵盤敲得飛快,鼠標連擊錚鳴。
了卻項目爛尾事,贏得客戶多好評。幸白發未生。
? 先風騷地賦詞一首,然后給大家拋出一個貌似極其容易的問題,如何把"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