Java学习笔记(一):时间日期的获取---Date、SimpleDateFormat、Calendar

Date:主要用于--获取时间

使用util包下的类

举例:Date date=new Date(); //获取系统当前时间

//Date代码参考

        //无参构造方法
        Date date=new Date(); //获取系统当前时间
        System.out.println(date); //输出:Wed Jul 17 21:40:27 CST 2019
        //带参构造方法
        long l=20000000l;
        Date dateL=new Date(l); //表示:举例1970年01月01日 20000000毫秒后的时间
        System.out.println(dateL); //输出:Thu Jan 01 13:33:20 CST 1970
        //date的方法
        long lDate=date.getTime(); //获取毫秒值(距离1970年01月01日)
        date.setTime(20000000l); //设置当前时间
        System.out.println(date); //输出:Thu Jan 01 13:33:20 CST 1970

 

//Date类 源码查看

   //无参构造方法:获取系统当前时间
    public Date() {
        this(System.currentTimeMillis());
    }


   //重写的toString方法
    public String toString() {
        // "EEE MMM dd HH:mm:ss zzz yyyy";
        BaseCalendar.Date date = normalize();
        StringBuilder sb = new StringBuilder(28);
        int index = date.getDayOfWeek();
        if (index == BaseCalendar.SUNDAY) {
            index = 8;
        }
        convertToAbbr(sb, wtb[index]).append(' ');                        // EEE
        convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
        CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd

        CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
        CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
        CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
        TimeZone zi = date.getZone();
        if (zi != null) {
            sb.append(zi.getDisplayName(date.isDaylightTime(), TimeZone.SHORT, Locale.US)); // zzz
        } else {
            sb.append("GMT");
        }
        sb.append(' ').append(date.getYear());  // yyyy
        return sb.toString();
    }

SimpleDateFormat:主要用于--设置时间展示格式

顾名思义:简单的日期格式化。(只是定义一个日期表示形式,并不是获取日期)

在text包下

SimpleDateFormat类可以按照自己的习惯输出日期的表示形式,利于阅读。例如:2019-01-02

两种方法:

        format(Date date)   Date转为String

        parse(String str)   String转为Data

//指定格式输出当前时间

        Date date=new Date();
        //无参构造方法
        SimpleDateFormat spf=new SimpleDateFormat();
        System.out.println(spf.format(date)); //输出:2019/7/17 下午10:15
        //带参构造方法
        SimpleDateFormat spf1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println(spf1.format(date)); //输出:2019-07-17 22:15:13
//字符串转为Date形式输出
//注意:字符串的日期形式 与 SimpleDateFormat中设置的形式 要一致

        String str="2011-03-22";
        SimpleDateFormat spf2=new SimpleDateFormat("yyyy-MM-dd");
        try {
            date=spf2.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(date); //输出:Tue Mar 22 00:00:00 CST 2011

Calendar:主要用于--修改时间、获取日期中某个单独值(比如月份)

util包下

Calendar:日历类,是一个抽象类。以多态的形式定义对象:Calendar c=Calendar.getInstance();

注意:月份从0开始

三个方法:

get(Calendar.YEAR)  获取年/月/日等

set(年,月,日)  设置日期

add(Calendar.YEAR,-2)  时间字段的增减(年份减2)

//获取日历的某个字段举例

        Calendar calendar=Calendar.getInstance();
        int y=calendar.get(Calendar.YEAR); //获取 年
        System.out.println(y); //输出:2019


//直接输出calendar,可以查看日历每个字段的表示单词

        System.out.println(calendar);
        //输出:... YEAR=2019,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=17,DAY_OF_YEAR=198,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=29,SECOND=3 ...
    
//set例子

        calendar.set(2018,3,12);//注意这里月份设置3,是指4月
        int y1=calendar.get(Calendar.YEAR);
        System.out.println(y1); //输出:2018

//add例子

        calendar.add(Calendar.YEAR,-8);
        int y2=calendar.get(Calendar.YEAR);
        System.out.println(y2); //输出:2010

 

 

 

 

 

 

你可能感兴趣的:(Java技术)