Java学习之日期格式化显示(SimpleDateFormatDate)

初学Java,感觉什么都很新奇,比如看到下面一段代码:

import java.text.SimpleDateFormat;
import java.util.Date;
/**日期格式化显示 */
public class Main {public static void main(String[] args) {// TODO Auto-generated method stubDate d = new Date();SimpleDateFormat f = new SimpleDateFormat("今天是yyyy年MM月dd日kk点mm分ss秒");System.out.println(f.format(d));}
}


输出很神奇啊:

今天是2016年09月11日23点18分27秒

也就是说,上面的代码直接就准确输出了现在的时间!

简单看看SimpleDateFormat是怎么玩的:

package com.date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Main {public static void main(String[] args) throws ParseException{//使用format()方法将日期转换为指定格式的文本SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd  HH:mm");SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");Date now = new Date();//创建Date对象,表示当前时间System.out.println(sdf1.format(now));//调用format()方法,将日期转换为字符串并输出System.out.println(sdf2.format(now));System.out.println(sdf3.format(now));//使用parse()方法将文本转换为日期String d = "2016-12-17 13:14:20";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date date = sdf.parse(d);System.out.println(date);}
}

再看看Calendar:

package com.calendar;
import java.util.*;
import java.text.*;
public class Main {public static void main(String[] args) {//创建Calendar对象Calendar c = Calendar.getInstance();//将Calendar对象转换为Date对象Date date = c.getTime();//创建SimpleDateFormat对象,指定目标格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//将日期转换为指定格式的字符串String now = sdf.format(date);System.out.println("当前时间:"+now);}
}

还记得当初用C++输出当地时间的时候简直麻烦,如今JAVA实现却是如此简洁!

它是如何做到的呢?

首先,SimpleDateFormat是一个类,它的作用是对日期字符进行解析和格式化输出。

而代码中的yyyy、MM、dd、kk、mm、ss都被它解析了,它的解析所遵循的规则是这样的:

/*G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一月中第几个星期 a 上午 / 下午 标记符 k 时 在一天中 (1~24) K 时 在上午或下午 (0~11) z 时区 
*/

然后它会自动将上表里面的字母转换成后面所对应的时间

至于Date的各种用法:

http://www.233.com/Java/zhuanye/20100913/114439134.html