1、DateFormat類概述
DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。
是抽象類,所以使用其子類SimpleDateFormat。
2、SimpleDateFormat構造方法
public SimpleDateFormat():將一個 Date 格式化為日期/時間字符串。(默認模式)
public SimpleDateFormat(String pattern):用給定的模式和默認語言環境的日期格式符號構造 SimpleDateFormat。
3、成員方法
public final String format(Date date):將一個 Date 格式化為日期/時間字符串。
public Date parse(String source):從給定字符串的開始解析文本,以生成一個日期。
String和Date的相互轉化理解:

舉例1:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /* * Date -- String(格式化) * public final String format(Date date) * * String -- Date(解析) * public Date parse(String source) * * DateForamt:可以進行日期和字符串的格式化和解析,但是由於是抽象類,所以使用具體子類SimpleDateFormat。 * * SimpleDateFormat的構造方法: * SimpleDateFormat():默認模式 * SimpleDateFormat(String pattern):給定的模式 * 這個模式字符串該如何寫呢? * 通過查看API,我們就找到了對應的模式 * 年 y * 月 M * 日 d * 時 H * 分 m * 秒 s * * 2014年12月12日 12:12:12 */ public class DateFormatDemo01 { public static void main(String[] args) throws ParseException { // Date -- String // 創建日期對象 Date d = new Date(); // 創建格式化對象 // SimpleDateFormat sdf = new SimpleDateFormat(); // 給定模式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); // public final String format(Date date) String s = sdf.format(d); System.out.println(s); //String -- Date String str = "2008-08-08 12:12:12"; //在把一個字符串解析為日期的時候,請注意格式必須和給定的字符串格式匹配 SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf2.parse(str); System.out.println(date); } }
舉例2:工具類
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { private DateUtil() { } /** * 這個方法的作用就是把日期轉成一個字符串 * * @param d * 被轉換的日期對象 * @param format * 傳遞過來的要被轉換的格式 * @return 格式化后的字符串 */ public static String dateToString(Date d, String format) { // SimpleDateFormat sdf = new SimpleDateFormat(format); // return sdf.format(d); return new SimpleDateFormat(format).format(d); } /** * 這個方法的作用就是把一個字符串解析成一個日期對象 * * @param s * 被解析的字符串 * @param format * 傳遞過來的要被轉換的格式 * @return 解析后的日期對象 * @throws ParseException */ public static Date stringToDate(String s, String format) throws ParseException { return new SimpleDateFormat(format).parse(s); } }
測試類:
import java.text.ParseException; import java.util.Date; public class DateFormatDemo02 { public static void main(String[] args) throws ParseException { Date d = new Date(); //yyyy-MM-dd HH:mm:ss String s = DateUtil.dateToString(d,"yyyy年MM月dd日 HH:mm:ss"); System.out.println(s); String s2 = DateUtil.dateToString(d,"yyyy年MM月dd日"); System.out.println(s2); String s3 = DateUtil.dateToString(d,"HH:mm:ss"); System.out.println(s3); String str = "2015-12-6"; Date dd = DateUtil.stringToDate(str,"yyyy-MM-dd"); System.out.println(dd); } }
輸出結果:
2015年12月06日 21:17:52
2015年12月06日
21:17:52
Sun Dec 06 00:00:00 CST 2015
舉例3:算一下你來到這個世界多少天?
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner; /* * 算一下你來到這個世界多少天? * * 分析: * A:鍵盤錄入你的出生的年月日 * B:把該字符串轉換為一個日期 * C:通過該日期得到一個毫秒值 * D:獲取當前時間的毫秒值 * E:用D-C得到一個毫秒值 * F:把E的毫秒值轉換為年 * /1000/60/60/24 */ public class DateFormatDemo03 { public static void main(String[] args) throws ParseException { // 鍵盤錄入你的出生的年月日 Scanner sc = new Scanner(System.in); System.out.println("請輸入你的出生年月日:"); String line = sc.nextLine(); // 把該字符串轉換為一個日期 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date d = sdf.parse(line); // 通過該日期得到一個毫秒值 long myTime = d.getTime(); // 獲取當前時間的毫秒值 long cutTime = System.currentTimeMillis(); // 用D-C得到一個毫秒值 long time = cutTime - myTime; // 把E的毫秒值轉換為年 long day = time / 1000 / 60 / 60 / 24; System.out.println("您來到這個世界:" + day + "天。"); } }