java关于日期处理详解

java关于日期处理详解

    说到Java中日期处理,有四个类需要大家认真理解

一,Date

       Date类只是一个对long值的对象封装。 Date类放在java.util包中,因此使用时需要用import关键字引入。

       Java获取系统时间:Date now = new Date();

       getTime()方法返回自1970年1月1日 00:00:00 GMT以来此Date对象表示的毫秒数。

       从JDK1.1开始,应该使用Calendar类实现日期和时间字段之间转换,使用DateFormat类来格式化和分析日期字符串。Date中的相应方法已废弃。

二,DateFormat

        DateFormat类用来格式化或解析日期或时间。DateFormat类提供了很多静态方法,可以将日期或时间格式化成不同的风格。 DateFormat类是一个抽象类,是Format的子类,因此不能使用new的方式创建对象,在使用时可以直接使用NumberFormat类中提供的静态方法为其实例化。 DateFormat可以解析任何语言环境的日期,其代码可完全与语言环境的约定无关。

DateFormat类的常用方法:

        getInstance()         返回DateFormat的一个实例

        getDateInstance()     返回日期格式实例

        getTimeInstance()     返回时间格式实例

        getDateTimeInstance() 返回的日期时间格式实例

        format()              格式化

        parse()               根据指定格式将字符串转换成 一个日期

具体使用方法如下所示:

// 系统时间
        Date date = new Date();

        // 使用默认格式
        DateFormat df1 = DateFormat.getInstance();
        System.out.println(df1.format(date));

        System.out.println("------华丽的-----------------------分割线-----");

        // 使用日期的默认格式
        DateFormat df2 = DateFormat.getDateInstance();
        System.out.println(df2.format(date));

        // 格式化风格包括FULL、LONG、MEDIUM和SHORT
        DateFormat df3 = DateFormat.getDateInstance(DateFormat.SHORT);
        System.out.println(df3.format(date));

        // 自定义格式化风格和语言环境
        DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG, Locale.JAPAN);
        System.out.println(df4.format(date));

        System.out.println("------华丽的-----------------------分割线-----");

        // 使用时间的默认格式
        DateFormat df5 = DateFormat.getTimeInstance();
        System.out.println(df5.format(date));

        // 格式化风格包括FULL、LONG、MEDIUM和SHORT
        DateFormat df6 = DateFormat.getTimeInstance(DateFormat.FULL);
        System.out.println(df6.format(date));

        // 自定义格式化风格和语言环境
        DateFormat df7 = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.CHINA);
        System.out.println(df7.format(date));

        System.out.println("------华丽的-----------------------分割线-----");

        // 使用日期时间的默认格式
        DateFormat df8 = DateFormat.getDateTimeInstance();
        System.out.println(df8.format(date));

        // 格式化风格包括FULL、LONG、MEDIUM和SHORT
        DateFormat df9 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG);
        System.out.println(df9.format(date));

        // 自定义格式化风格和语言环境
        DateFormat df10 = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.MEDIUM,
                Locale.US);
        System.out.println(df10.format(date));

        System.out.println("------华丽的-----------------------分割线-----");

        DateFormat dfFormat = DateFormat.getDateTimeInstance();
        Date dt;
        try {
            dt = dfFormat.parse("2019/02/14 17:20:30");
            System.out.println(dt);
        } catch (ParseException e) {
            e.printStackTrace();
        }

运行结果如下图所示:

三,SimpleDateFormat

SimpleDateFormat类是DateFormat类的一个具体子类,用于格式化日期或时间。 SimpleDateFormat类可以直接使用new关键字创建对象。 SimpleDateFormat类可以根据指定的模式对日期或时间进行格式化。

常用的模式:

                     yyyy    年

                     MM      月  必须大写、否则就是分钟 

                     dd      日

                     HH      时  24小时制,如果是小写、为12小时制

                     mm       分  一定要小写

                     ss      秒

                     SSS     毫秒  一定要大写、否则就是秒

提示:SimpleDateFormat用起来比DateFormat更加自由和方便。

具体方法如下所示:

        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss SSS");
        System.out.println(sdf.format(date));
        System.out.println(date.toString());

        System.out.println("------华丽的-----------------------分割线-----");

        sdf = new SimpleDateFormat("yyyy/MM/dd");

        try {
            date = sdf.parse("2019/02/14");
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        // 可以在不创建新的对象时更改日期的格式
        sdf.applyPattern("yyyy'年'MM'月'dd'日'");
        System.out.println(sdf.format(date));

运行结果如下图所示:

四,Calender

        Calendar类是一个抽象类,因此不能使用new的方式创建对象,在使用时可以直接使用Calendar类中提供的静态方法getInstance()取得Calendar类的一个实例。 Calendar类为一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。在编码过程中,Calender还是十分常用的。

具体的使用方法如下所示:

Calendar c = Calendar.getInstance();
        System.out.println("年:" + c.get(Calendar.YEAR));
        System.out.println("月:" + (c.get(Calendar.MONTH) + 1)); // 月从0开始
        System.out.println("日:" + c.get(Calendar.DAY_OF_MONTH)); // 可以使用Calendar.DATE
        System.out.println("时(12小时制):" + c.get(Calendar.HOUR)); // 0----11
        System.out.println("时(24小时制):" + c.get(Calendar.HOUR_OF_DAY)); // 0----23
        System.out.println("分:" + c.get(Calendar.MINUTE));
        System.out.println("秒:" + c.get(Calendar.SECOND));

        Date date = c.getTime();
        System.out.println("时间:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(date));

        String week = null;
        switch (c.get(Calendar.DAY_OF_WEEK)) {
            case Calendar.SUNDAY:
                week = "星期日";
                break;
            case Calendar.MONDAY:
                week = "星期一";
                break;
            case Calendar.TUESDAY:
                week = "星期二";
                break;
            case Calendar.WEDNESDAY:
                week = "星期三";
                break;
            case Calendar.THURSDAY:
                week = "星期四";
                break;
            case Calendar.FRIDAY:
                week = "星期五";
                break;
            case Calendar.SATURDAY:
                week = "星期六";
                break;
        }
        System.out.println(week);

        // 加5年
        c.add(Calendar.YEAR, 5);
        System.out.println("新的年:" + c.get(Calendar.YEAR));

        // 减9个月
        c.add(Calendar.MONTH, -9);
        System.out.println("新的月:" + (c.get(Calendar.MONTH) + 1));

        // 加25天
        c.add(Calendar.DATE, 25);
        System.out.println("新的日:" + c.get(Calendar.DATE));

        date = c.getTime();
        System.out.println("新的時間:" + new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(date));
    }

运行结果如下图所示:

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值