日期格式化

前言

Date

Date类表示特定的瞬间精确到毫秒,不过从API可以看出很多的方法已经废弃了,这个类已经在过多使用了,不过还是需要了解一下的,为了后面的学习做铺垫

构造方法

  • new Date()

常用的方法

  • long getTime() 返回计算机上面的时间,返回的是毫秒

  • setTime(long s) 用给定的毫秒值s设置时间

实例

    Date date=new Date();
    System.out.println(date.getTime());

SimpleDateFormat

  • 这个类是一个简单的格式化日期的类,继承与DateFormat,相对于父类来说使用简单

构造方法

  • new SimpleDateFormat() 使用默认的格式化模板创建对象

  • new SimpleDateFormat(String pattern) 使用指定的格式化模板创建对象

常用的方法

  • String format(Date date) 将给定的日期格式化指定的模板的样式,比如2017-01-29 23:22:11

  • applyPattern(String pattern) 将给定的格式应用于此日期的格式,相当于直接使用new Date(String pattern)

  • Date parse(String d) 将给定的格式化的日期格式字符串转换成Date对象,需要注意的是转化的时候定义的模板一定要和字符串的日期格式的模板一样,否则将会解析不正确的形式

常用的日期格式化的模板

日期格式化的格式

实例

  • 使用默认的模板格式化日期

        SimpleDateFormat dateFormat=new SimpleDateFormat();   //默认的格式
        String formateString=dateFormat.format(date);   //格式化当前的日期
        System.out.println(formateString);
  • 使用指定的模板格式化日期

        String model="yyyy-MM-dd-FF  HH:mm:ss";  //指定格式化的模板
        SimpleDateFormat dateFormat2=new SimpleDateFormat(model);
        System.out.println(dateFormat2.format(date));
  • 将格式化的日期转换成Date类型的,使用的parse(String s),需要注意的是,下面定义的模板一定要和给定的格式化后的日期格式一样,否则转换后Date类型的毫秒值可能不正确

        String d = "2017-06-12 22:34:19";   //给出格式化后的日期
        String pattern = "yyyy-MM-dd HH:mm:ss";  //按照上面的日期格式定义模板,这个一定要完全和上面的一样,否则转换不正确
        SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
        try {
            Date date = dateFormat.parse(d);   //解析成Date类型
            System.out.println(dateFormat.format(date));
        } catch (ParseException e) {
            System.err.println("解析错误");

        }
  • 综合使用:计算时间差

        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入年-月-日");
        String startTime=scanner.next();
        System.out.println("请输入结束时间(年-月-日)");
        String endTime=scanner.next();
        String moudle="yyyy-MM-dd";   //定义时间模板
        //创建指定模板的解析
        SimpleDateFormat dateFormat=new SimpleDateFormat(moudle);
        Date startDate=dateFormat.parse(startTime);//解析开始时间
        Date endDate =dateFormat.parse(endTime);//解析结束时间
        long time=startDate.getTime()-endDate.getTime();  //返回两个时间的差,毫秒
        int day=(int)(time/1000/60/60/24);  //转化为天数,1秒等于1000毫秒,一分钟等于60秒,一小时等于60分钟,一天等于24小时
        System.out.println(day);

Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

创建对象

  • Calendar.getInstance()

常用方法

  • int get(int field) 返回当前对象的一些日期信息

  • Date getTime() 获得当前日期的Date对象

  • add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:add(Calendar.DAY_OF_MONTH, -5)

  • setTime(Date date) 使用给定的Date对象,设置Calendar时间

实例

  • get方法获取一些字段的值

        Calendar calendar = Calendar.getInstance(); // 创建对象
        System.out.println(calendar.get(Calendar.YEAR));// 获取年份
        System.out.println(calendar.get(Calendar.MONTH) + 1);// 月,从0开始,即是输出5表示6月
        System.out.println(calendar.get(Calendar.DATE));// 获取一个月中的第几天
        System.out.println(calendar.get(Calendar.HOUR)); // 小时
        System.out.println(calendar.get(Calendar.MINUTE)); // 分钟
        System.out.println(calendar.get(Calendar.SECOND)); // 秒
        System.out.println(calendar.get(Calendar.AM_PM)); // 获得是上午还是下午AM=0,PM=1
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 一个月中的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 一周中的第几天,星期日是第一天
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中的第几天
        System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 一天中的第几小时

        if (calendar.get(Calendar.AM_PM) == Calendar.AM) {
            System.out.println("现在是上午");
        }

        if (calendar.get(Calendar.MONTH) + 1 == Calendar.JULY) {
            System.out.println("现在是6月");
        }
  • Date getTime()方法的使用

        Calendar calendar=Calendar.getInstance();
        Date date=calendar.getTime();   //获得Date对象
        String pattern="yyyy-MM-dd  HH:mm:ss";
        SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);
        System.out.println(dateFormat.format(date));
  • add(int field,int amount)方法的使用

        Calendar calendar=Calendar.getInstance();
        calendar.add(Calendar.DATE, -2);
        System.out.println(calendar.get(Calendar.DATE));
  • 综合实例:计算出当前的准确日期

        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(calendar.MONTH) + 1; // 从0开始算,因此加1
        int date = calendar.get(Calendar.DATE);
        int week = calendar.get(Calendar.WEEK_OF_MONTH) + 1; // 从周日开始算,因此加1
        int hour = calendar.get(Calendar.HOUR);
        int minute = calendar.get(Calendar.MINUTE);
        int seconds = calendar.get(Calendar.SECOND);
        if (calendar.get(Calendar.AM_PM) == Calendar.AM) {

            System.out.println("现在是" + year + "年" + month + "月" + date + "号"
                    + "星期" + week + "上午" + hour + "点" + minute + "分" + seconds
                    + "秒");

        } else {
            System.out.println("现在是" + year + "年" + month + "月" + date + "号"
                    + "星期" + week + "下午" + hour + "点" + minute + "分" + seconds
                    + "秒");
        }

码猿技术专栏
486 声望108 粉丝

« 上一篇
Java反射机制