Java 中的日期與時間處理
題外
工作以來有些迷茫,一開始瞭解了一下 SSM 框架的使用,而在公司的實際開發中並非如此,而是在 SSH 框架的基礎上使用,又去稍微看了一下 Struts2,而 Hibernate 還沒開始去了解。
近來突然覺得,框架其實不是重點,只是爲了快速開發而已。所以開始反過來,繼續補習基礎的知識。
這一篇是馬士兵老師講的 JavaSE基礎專題_日期處理 的一些筆記,而馬老師講這個專題時,主要的還是在教一種學習的思路,更多的靠自學。
日期與時間
主要的相關的類
java.lang.System
java.util.Date
java.util.Calendar
java.util.GregorianCalendar
java.util.TimeZone
java.text.DateFormat
java.text.SimpleDateFormat
java.sql.Date
java.sql.Time
java.sql.Timestamp
而我們常用的主要是 java.util.Date,java.util.Calendar,java.text.SimpleDateFormat 和 java.sql.Timestamp。大多用在與數據庫打交道,故在從數據庫中獲取數據之類的,大多使用 Timestamp 來操作。
格式轉換例子
// 默認將當前時間傳入,例如 Thu Oct 19 21:42:19 CST 2017
Date d = new Date();
System.out.println("Date 對象中的時間:" + d);
// 設置時間格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
// 格式化日期返回 String 類型,format 中傳入 Date 類型或者其子類(例如下面的 Timestamp 類)
String s = sdf.format(d);
System.out.println("SimpleDateFormat 格式化後的字符串:" + s);
// 時間戳,數據庫中獲取的值
Timestamp ts = Timestamp.valueOf(s);
// Timestamp format must be yyyy-MM-dd hh:mm:ss[.fffffffff],如果不是會報錯
System.out.println("Timestamp 對象中的時間:" + ts);
// 初始化日曆 默認也是存入當前時間
Calendar c = Calendar.getInstance();
c.setTime(ts); // 設置時間,存入 Date 類及其子類
System.out.println("Calendar 獲取時間所在月份中的第幾天:" + c.get(Calendar.DAY_OF_MONTH));
/*
運行結果:
------------------------------------
Date 對象中的時間:Thu Oct 19 22:01:15 CST 2017
SimpleDateFormat 格式化後的字符串:2017-10-19 10:01:15
Timestamp 對象中的時間:2017-10-19 10:01:15.0
Calendar 獲取時間所在月份中的第幾天:19
*/
心得
主要學習的是思路,由已知的知識拓展到自己所不瞭解,或者不知道的。
一開始時只是知道 Date 類,使用之中在 API 文檔中尋找 Date 類的方法,隨後便會發現有些方法已經被廢棄了,而廢棄的後面就會告訴我們一些替代的方法。例如 Date 類中的 getHours 方法的描述:
Deprecated.
As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY).
於是乎,我們根據描述去找到 java.util.Calendar 這個類進行知識的拓展。這就是我們所需要的學習方法。
下面附上馬士兵老師推薦的自學順序
1. 查文檔、做實驗
2. Google
1. 關鍵詞的選擇
由精細到粗化
2. 略讀頁面介紹,分析可能性
超過 5 頁眉找到,不要往後翻
3. 先中文,後英文
3. 論壇
1. 問題問清楚
2. www.csdn.net
3. 國外的論壇
後記
本文基於個人的學習
分享出來純當給大家參考一下,也當作自己的筆記
馬士兵老師的教程雖然相對於其他教程距今比較久遠,但是底層的東西以及思想是不容易變化的,還是值得學習學習的。
編輯:HochenChong
時間:2017-10-19