【笔记】日期类

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文档,这里也贴上来以供参考。

字母日期或时间元素表示示例
GEra 标志符TextAD
yYear1996; 96
M年中的月份MonthJuly; Jul; 07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number0
k一天中的小时数(1-24)Number24
Kam/pm 中的小时数(0-11)Number0
ham/pm 中的小时数(1-12)Number12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific 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));
    }

 

转载于:https://www.cnblogs.com/just2do/p/3266199.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值