29、Java中的日期与时间:Date、Calendar、DateFormat和SimpleDateFormat的应用

        在Java编程中,处理日期和时间是一项常见且重要的任务。Java提供了多种方式来处理日期和时间,其中最常用的是Date、Calendar、DateFormat和SimpleDateFormat类。本文将深入解析这些类的功能和用法。

一.Date

        用来处理日期和时间,这个类JDK1.0就有了,当时设计的并不周全,但该类的大部分构造器、方法均已过时。但是很多以前的项目已经使用这个类了,而且很多人习惯使用这个类。下面是常用方法的简单说明。        

1.1.构造方法

  • Date():创建代表当前时间的 Date 对象,底层调用 System 类获取当前时间毫秒数。
  • Date(long date):根据指定的时间毫秒数创建 Date 对象,参数为时间的毫秒数。

1.2.成员方法

  • boolean after(Date when):判断该时间是否在指定时间之后。
  • boolean before(Date when):判断该时间是否在指定时间之前。
  • long getTime():返回该时间的毫秒数。
  • void setTime(long time):以毫秒数的形式,设置该 Date 对象所代表的时间。

1.3.案例

    public static void main(String[] args) throws ParseException {
        Date d1 = new Date();
        //返回该时间的毫秒数long值
        System.out.println(d1.getTime());

        //当前时间+1秒
        Date d2 = new Date(System.currentTimeMillis() + 1000);
        System.out.println(d2.getTime());

        //判断d1是否在d2之后
        System.out.println(d1.after(d2));

        //判断d1是否在d2之前
        System.out.println(d1.before(d2));

        //比较
        //d1<d2返回-1 d1=d2返回0、d1>d2 返回1
        System.out.println(d1.compareTo(d2));

        //设置时间 d2+1秒
        d2.setTime(d2.getTime() + 1000);
        System.out.println(d2.getTime());

    }

二.Calendar(推荐使用)

Calendar类是一个抽象类,它是一个日历,可以处理日期、时间、年、月、日等。它比Date类提供了更多的灵活性和功能。推荐使用Calendar 。Calendar 类提供了自动进位的功能,这意味着当你设置一个字段的值超出了其允许的范围时(比如2月没有31天),Calendar 类会自动调整相关的字段以保持日期和时间的有效性(如果设置了2月31号,就会自动进位到3月)。这种特性在处理日期和时间时非常有用,因为它简化了字段之间的相互影响。

2.1.实例化 Calendar

  • Calendar 是一个抽象类,不能通过构造器创建 Calendar 对象;
  • Calendar 类提供了静态方法 getInstance(),用以创建实例;

2.2.与 Date 互转

  • Date getTime():Calendar的getTime方法返回的是Date类型,而Date的getTime返回的是long.
  • void setTime(Date date):设置此 Calendar 实例的当前时间,参数为一个 Date 对象。

2.3.静态常量

  • YEAR,MONTH,DATE,HOUR,MINUTE,SECOND,MILLISECOND 等日历字段。

2.4.成员方法

  • int get(int field):返回指定字段的值(传入静态常量,返回具体的值);
  • void add(int field, int amount):给指定的字段增加一个值;
  • void set(int field, int value):给指定的字段设置一个值;
  • void set(int year, int month, int date):设置年、月、日的值;
  • void set(int year, int month, int date, int hourOfDay, int minute, int second):设置年月日时分秒的值;
     

2.3.案例

public static void main(String[] args) {

        //默认表达当前时间
        Calendar c = Calendar.getInstance();

        //分别获取年月日时分秒毫秒,get方法返回int
        System.out.println(c.get(Calendar.YEAR)); //2025
        //月份从默认0开始,所以的到之后要+1
        System.out.println(c.get(Calendar.MONTH) + 1); //1
        System.out.println(c.get(Calendar.DATE)); //21
        System.out.println(c.get(Calendar.HOUR)); //9
        System.out.println(c.get(Calendar.MINUTE)); //12
        System.out.println(c.get(Calendar.SECOND)); //4
        System.out.println(c.get(Calendar.MILLISECOND)); //221


        //getTime Calendar转换Date
        Date date = c.getTime();
        System.out.println(date); //Tue Jan 21 21:15:40 CST 2025

        //修改日期(年月日) 2025年1月30。month默认从0开始,0就是1月
        c.set(2025,0,30);
        System.out.println(c.getTime()); //Sun Mar 02 21:15:40 CST 2025

        //修改日期(年月日时分秒)
        c.set(2025,0,30,10,10,10);
        System.out.println(c.getTime()); //Thu Jan 30 10:10:10 CST 2025

        //修改任意字段,将月份修改为2月。上面将日期改为了1月30.此时将月份改为2月
        //但由于2月没有30天,所以自动进位成3月2日。
        //根据传入的常量修改,传入YEAR修改年........
        c.set(Calendar.MONTH,1);
        System.out.println(c.getTime()); //Sun Mar 02 10:10:10 CST 2025


        //指定字段加减(正数是+,负数是-)
        c.add(Calendar.YEAR,2);
        System.out.println(c.get(Calendar.YEAR)); //2027
        c.add(Calendar.YEAR,-1);
        System.out.println(c.get
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值