Java API —— DateFormat类
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 + "天。"); } }