【笔记】日期类

Java提供java.util.Date类来对日期和时间的系统消息进行封装,而提供java.util.Calendar类将根据默认的日历系统来解释Date对象。

Date

Date对象表示的默认顺序是:星期、月、日、小时、分、秒、年,例如:

    @Test
    public void test01() {
        Date date = new Date();
        System.out.println(date);
    }

输出结果为:

Sun Aug 18 17:12:51 CST 2013

这种顺序很不符合中国人的习惯,因此可以自定义日期格式,需要用到的类是DateFormat。

    @Test
    public void test02() {
        Date date = new Date();
        // DateFormat是抽象类,需要使用其子类 SimpleDateFormat创建对象。
        DateFormat df = new SimpleDateFormat("yyyy年M月dd日E");
        String dateStr = df.format(date);
        System.out.println(dateStr);
    }

输出结果为:

2013年8月18日星期日

格式参数可以参照api文档,这里也贴上来以供参考。

字母日期或时间元素表示示例
G Era 标志符 Text AD
y Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800

 


 

Calendar

Calendar是一个抽象类,可以使用getInstance()方法获得对象。

    private String[] dom = {  "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日" };
    /*这里有个诡异的现象,我做这个实验的时候是星期日,第一次做这个实验时我的dom数组是
    private String[] dom = {  "星期日" ,"星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    原因是cal.get(Calendar.DAY_OF_WEEK)返回了1,但是做了多次实验后cal.get(Calendar.DAY_OF_WEEK)变成返回7了,我推测是
    使用GregorianCalendar时改变了我系统的日期格式。
     */

    @Test
    public void test03() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.YEAR, -1);
        StringBuffer sb = new StringBuffer();
        sb.append(cal.get(Calendar.YEAR) + "年")
                .append((cal.get(Calendar.MONTH) + 1) + "月")
                // 月份从0~12
                .append(cal.get(Calendar.DAY_OF_MONTH) + "日")
                .append(dom[cal.get(Calendar.DAY_OF_WEEK)-1]);
        System.out.println(sb);
    }

输出结果:2012年8月18日星期日

 


 

小练习

问:获取任意年份2月份的天数

    // 方法1 : 判断平闰年
    private static final int YEAR = 1840;

    @Test
    public void test04() {
        GregorianCalendar cal = new GregorianCalendar();
        int num = cal.isLeapYear(YEAR) ? 29 : 28;
        System.out.println(num);
    }

    // 方法2 :3月1日往前一天就是2月最后一天
    @Test
    public void test05() {
        Calendar cal = Calendar.getInstance();
        cal.set(YEAR, 2, 1);
        cal.add(Calendar.DAY_OF_MONTH, -1);
        System.out.println(cal.get(Calendar.DAY_OF_MONTH));
    }

 

posted on 2013-08-18 17:47  啷哩个啷  阅读(157)  评论(0)    收藏  举报

导航