Java常用的时间类以及其转化

本文介绍了Java中Date、DateFormat和Calendar类的使用,包括日期时间的格式化、转换以及计算。通过实例展示了如何获取今年的第几天,并提供了日期加减操作的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近经常用到时间这个参数,无论是自己获取到传进去,还是从数据库获取出来,都是Java开发必备的一门基本功。

 一、Date类

类 Date 表示特定的瞬间,精确到毫秒。

最简单也最经典的用法:

Date date = new Date();// 获取当前的年月日时分秒以及星期和时区

 

但是,如果我们按自己想要的格式来显示日期,一般会引用DateFormat类的子类SimpleDateFormat

二、DateFormat类

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

DateFormat类是抽象类,所以使用其子类SimpleDateFormat。

一般日期类型转String类型,或者自定义String类型转日期类型都会用到它。

注:"HH:mm:ss"和"hh:mm:ss" ,前者是24小时制,后者是12小时制

注:SimpleDateFormat中对应String中的格式,才能成功转换

三、小案例:今天是今年的第几天?

思路:

将今年第一天和今天都封装到字符串里

将字符串转换成日期对象

将日期对象转换成毫秒值

让今天的毫秒值减去第一天的毫秒值

将毫秒值转换成天数

 四、Calendar类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

public static void main(String[] args) {
        
        //Calendar对象,无参,默认为当前日期
        Calendar calendar =new GregorianCalendar();
        //获取当前年份
        System.out.println(calendar.get(Calendar.YEAR));
        //获取当前月份 0表示一月,1表示二月......11表示12月
        System.out.println(calendar.get(Calendar.MONTH));
        //获取当前日期 也可以使用DAY_OF_MONTH
        System.out.println(calendar.get(Calendar.DATE));
        //获取当前时 24小时进制
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
        //获取当前分
        System.out.println(calendar.get(Calendar.MINUTE));
        //获取当前秒
        System.out.println(calendar.get(Calendar.SECOND));

        //获取今天是这个月的第几个星期
        System.out.println(calendar.get(Calendar.WEEK_OF_MONTH));
        //获取今天是星期几  1表示星期天,2表示星期一......7表率星期六
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));


        // 设置日期时间(月份是从0开始的)(法一)
        calendar =new GregorianCalendar(2021, 11, 14, 20, 20,20);
        // 2021-11-14 20:20:20
        //(法二)
        calendar.set(Calendar.YEAR, 2021);
        calendar.set(Calendar.MONTH, 10);
        calendar.set(Calendar.DAY, 14);


        System.out.println("Calendar和Date转换************");
        Date now = calendar.getTime();

        System.out.println(now);
        System.out.println(calendar.setTime(now));


        System.out.println("Calendar日期计算以及判断***********");
        calendar = new GregorianCalendar();
        Calendar calendar2 = new GregorianCalendar();
        calendar2.set(Calendar.YEAR, 2035);

        //是否在时间(calendar2)之后
        System.out.println(calendar.after(calendar2));
        //是否在时间(calendar2)之前
        System.out.println(calendar.before(calendar2));
        //增加多少年月日,时分秒与之同理
        calendar.add(Calendar.YEAR, -10);
        calendar.add(Calendar.MONTH, 5);
        calendar.add(Calendar.DAY, 1);

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知笑长长

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

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

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

打赏作者

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

抵扣说明:

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

余额充值