Java基础巩固系列 日期类

代码示例:

/*
 * 与时间相关的类
 * 1.System类下的currentTimeMillis();
 * 2.Date类:java.util.Date //Date类的API不易于国际化,大部分被废弃了。
 *      如何创建其实例:其下的方法:toString()、getTime()(以及其子类java.sql.Date)
 * 3.SimpleDateFormat类
 * 4.Calender类
 * */
public class TestDate {

    //日历:Calendar类 get()/add()/set()/Date getTime()/seTime(Date date)
    @Test
    public void test4() {
        Calendar c = Calendar.getInstance();
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);

        c.add(Calendar.DAY_OF_MONTH, -2);
        day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);

        c.set(Calendar.DAY_OF_MONTH, 9);
        Date d = c.getTime();
        System.out.println(d);
    }

    /*
     *  “三天打鱼两天晒网”  1990-01-01   XXXX-XX--XX 打渔?晒网?
     * */
    @Test
    public void test3() throws ParseException {
        String str1 = "1990-01-01";
        String str2 = "1990-01-06";
        int dates = getDays(str1, str2);

        if (dates % 5 == 0 || dates % 5 == 4) {
            System.out.println("晒网");
        } else {
            System.out.println("打渔");
        }
    }

    //返回date1和date2之间的天数,date1早于date2
    public int getDays(String date1, String date2) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = sdf.parse(date1);
        Date d2 = sdf.parse(date2);
        long milliTime = d2.getTime() - d1.getTime();
        return (int) (milliTime / 1000 / 3600 / 24) + 1; //加1 是表示强转的时候,比如3.5表示要多加1天
    }

    /*
     * java.text.SimpleDateFormat类易于国际化
     * 格式化:日期--->文本  使用SimpleDateFormat的format方法
     * 解析: 文本---->日期
     * */
    @Test
    public void test2() throws ParseException {
        //1.格式化1
        SimpleDateFormat sdf = new SimpleDateFormat();
        String date = sdf.format(new Date());
        System.out.println(date);  //19-4-8 下午1:50
        //2.格式化2
        SimpleDateFormat sdf1 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
        date = sdf1.format(new Date());
        System.out.println(date); //星期一, 8 四月 2019 14:10:53 +0800

        //3.解析:
        Date date1 = sdf.parse("19-4-8 下午1:50");
        System.out.println(date1);

        date1 = sdf1.parse("星期一, 8 四月 2019 14:10:53 +0800");
//        date1 = sdf1.parse("19-4-8 下午1:50");
        System.out.println(date1);
    }

    //java.util.Date 不易于国际化
    @Test
    public void test1() {
//        java.sql.Date d2 = new java.sql.Date(1626312352345L);
//        System.out.println(d2); //2021-07-15
        //创建一个Date的实例
        Date d1 = new Date();
        System.out.println(d1);
        System.out.println(d1.toString()); //Mon Apr 08 13:40:47 CST 2019
        System.out.println(d1.getTime()); //1554702222986
        Date d2 = new Date(1554702222986L);
        System.out.println(d2); //Mon Apr 08 13:43:42 CST 2019

    }

}

test1结果:

Mon Apr 08 14:47:03 CST 2019
Mon Apr 08 14:47:03 CST 2019
1554706023798
Mon Apr 08 13:43:42 CST 2019

test2结果:

19-4-8 下午2:47
星期一, 8 四月 2019 14:47:13 +0800
Mon Apr 08 13:50:00 CST 2019
Mon Apr 08 14:10:53 CST 2019

test3结果:

打渔

test4结果:

8
6
Tue Apr 09 14:47:45 CST 2019

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值