工具类Date、Calendar及其格式化DateFormate

本文详细探讨了Java编程中常用的日期处理工具类Date、Calendar以及格式化类SimpleDateFormat,包括它们的使用方法和综合应用示例。
摘要由CSDN通过智能技术生成

工具类Date、Calendar及其格式化SimpleDateFormate

Calendar类:

public class DemoCalendar {
    public static void main(String[] args) {
        // 1.计算某一月份的最大天数
        Calendar time = Calendar.getInstance();
        time.clear();
        int year=2020;
        int i=12;
        time.set(Calendar.YEAR, year); // year 为 int
        time.set(Calendar.MONTH, i - 1);// 注意,Calendar对象默认一月为0
        int day = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天数
        // 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间
        // 2.Calendar和Date的转化
        // (1) Calendar转化为Date Calendar
        Calendar cal = Calendar.getInstance();
        Date date = cal.getTime();
        // (2) Date转化为Calendar
        Date date1 = new Date();
        Calendar cal1 = Calendar.getInstance();
        cal.setTime(date);
        // 3.格式化输出日期时间(这个用的比较多)
        Date date2 = new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String time2 = df.format(date);
        System.out.println(time);
        // 4.计算一年中的第几星期
        // (1)计算某一天是一年中的第几星期
        Calendar cal3 = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2006);
        cal.set(Calendar.MONTH, 8);
        cal.set(Calendar.DAY_OF_MONTH, 3);
        int weekno = cal.get(Calendar.WEEK_OF_YEAR);
        // (2)计算一年中的第几星期是几号
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal2 = Calendar.getInstance();
        cal.set(Calendar.YEAR, 2006);
        cal.set(Calendar.WEEK_OF_YEAR, 1);
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        System.out.println(df1.format(cal.getTime()));//输出:2006-01-02
        // 5.add()和roll()的用法(不太常用)
        // (1)add()方法
        SimpleDateFormat df3=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal4 = Calendar.getInstance();
        cal4.set(Calendar.YEAR, 2006);
        cal4.set(Calendar.MONTH, 8);
        cal4.set(Calendar.DAY_OF_MONTH, 3);
        cal4.add(Calendar.DATE, -4);
        Date date3 = cal4.getTime();
        System.out.println(df3.format(date));
        cal4.add(Calendar.DATE, 4);
        date = cal4.getTime();
        System.out.println(df.format(date));//输出:2006-08-30 2006-09-03
        //(2)roll方法
        cal.set(Calendar.YEAR, 2006);
        cal.set(Calendar.MONTH,8);
        cal.set(Calendar.DAY_OF_MONTH,3);
        cal.roll(Calendar.DATE, -4);
        date=cal.getTime();
        System.out.println(df.format(date));
        cal.roll(Calendar.DATE,4);
        date=cal.getTime();
        System.out.println(df.format(date));//输出:2006-09-292006-09-03
        // 可见,roll()方法在本月内循环,一般使用add()方法;
    }
}

Date类:

public class Demo01 {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());//到时间原点经历了多少毫秒
        date();
        date2();
    }

    public static void date() {
        Date time = new Date();
        System.out.println(time);//Sat Sep 26 16:12:13 CST 2020
        //成员方法
        long a=time.getTime();//到时间原点经历了多少毫秒
        System.out.println(a);
    }

    public static void date2() {
        Date time2=new Date(13134651122144l);//Sat Mar 22 18:12:02 CST 2386
        System.out.println(time2);
    }
}

SimpleDateFormate:

  public static void main(String[] args) {
        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
        SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
        SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
        SimpleDateFormat myFmt4=new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        Date now=new Date();
        System.out.println(myFmt.format(now));
        System.out.println(myFmt1.format(now));
        System.out.println(myFmt2.format(now));
        System.out.println(myFmt3.format(now));
        System.out.println(myFmt4.format(now));
        System.out.println(now.toGMTString());
        System.out.println(now.toLocaleString());
        System.out.println(now.toString());
    }

}

综合运用:

public class TestCalendar {

    public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args) {
        Calendar now = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
        System.out.println("当前时间" + sdf.format(now.getTime()));
        now.add(Calendar.HOUR, 1);//当前时间2小时后的时间
        Date time1 = now.getTime();
        System.out.println("1小时后" + sdf.format(time1));
        Calendar now2 = Calendar.getInstance();
        now2.add(Calendar.DAY_OF_WEEK, 1);
        System.out.println("1天后" + sdf.format(now2.getTime()));
        Calendar now6 = Calendar.getInstance();
        now6.add(Calendar.DAY_OF_WEEK_IN_MONTH, 1);
        System.out.println("1星期后" + sdf.format(now6.getTime()));
        Calendar now3 = Calendar.getInstance();
        now3.add(Calendar.MONTH, 1);
        System.out.println("1月后" + sdf.format(now3.getTime()));

        //比较时间大小:1大于; 0等于; -1小于
        int boo = now3.compareTo(now2);
        System.out.println(boo);

        //获取当前时间的毫秒显示
        long timeInMillis = Calendar.getInstance().getTimeInMillis();
        System.out.println("当前时间的毫秒" + timeInMillis);

        //将毫秒转换为日期
        Calendar now4 = Calendar.getInstance();
        now4.setTimeInMillis(timeInMillis + 24 * 60 * 60 * 1000);
        System.out.println("毫秒转换为日期" + sdf.format(now4.getTime()));

        //日期转换为毫秒
        Calendar now5 = Calendar.getInstance();
        now5.setTime(now4.getTime());
        System.out.println("日期转换为毫秒" + now5.getTimeInMillis());

        //获取昨天的日期yyyy-MM-dd,逻辑:处理时间毫秒
        Calendar now7 = Calendar.getInstance();
        now7.setTimeInMillis(now7.getTimeInMillis() - 24 * 60 * 60 * 1000);
        System.out.println("前一天的日期" + sdf1.format(now7.getTime()));
        now7.setTimeInMillis(now7.getTimeInMillis() + 24 * 60 * 60 * 1000 * 2);
        System.out.println("后一天的日期" + sdf1.format(now7.getTime()));
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青春平头哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值