Java入门第96课——日期操作

码字不易,请大家关注公众号,转发,点赞,只需动动手指,不要钱,谢谢了老铁!

1.1 Date及其常用API

1.1.1 Java中的时间

    · Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点;

    · 固定的时间点叫纪元(epoch),是UTC时间1970年1月1日 00:00:00;

    · UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

1.1.2 Date类简介

    · java.util.Date类封装日期及时间信息。

    · Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。

    Date date=new Date();
    //系统当前的日期及时间信息
    System.out.println(date);
    //Sun Jan 06 11:52:55 CTS 2013
    long time=date.getTime();
    //1970年1月1日至今的毫秒数

1.1.3 setTime和getTime方法

    /** 使用setTime和getTime设置及获取时间 */
    public void testSetTime(){
        Date date=new Date();
        //输出当天此时此刻的日期和时间
        System.out.println(date);
        long time=date.getTime();
        //增加一天所经历的毫秒数
        time+=60*60*24*1000;
        date.setTime(time);
        //输出明天此时此刻的日期和时间
        System.out.println(date);
    }

setTime和getTime方法(续1)

    /** 获取当前系统时间 */
    public void testGetTime(){
        Date date=new Date();
        System.out.println(date);
        
        //1970年1月1日零时距此刻的毫秒数
        long time=date.getTime();
        System.out.println(time);
    }

1.1.4 Date重写toString方法

    · Date重写了toString()方法,用一个字符串来描述当前Date对象所表示的时间。格式如下:

    · Mon Feb 17 15:36:55 CST 2014

1.2 SimpleDateFormat

1.2.1 SimpleDateFormat简介

    · java.text.SimpleDateFormat是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期->文本)、解析(文本->日期)和规范化

    · 构造方法

        SimpleDateFormat()

        SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat

    · 方法

        final String format(Date date)  Date=>String

        Date parse(String source) throws ParseException  String=>Date

1.2.2 日期模式匹配字符

image.png

1.2.3 将Date格式化为String

    /** 日期格式化 */
    public void testFormat(){
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date=new Date();
        String dateStr=sdf.format(date);
        System.out.println(dateStr);
    }

1.2.4 将String解析为Date

    /**和format方法相反,parse方法用于按照特定格式将表示时间的字符串转换为Date对象*/
    public void testParse() throws Exception{
        String str="2013-12-25";
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Date date=sdf.parse(str);
        System.out.println(date);
    }

1.3 Calendar简介

1.3.1 Calendar简介

    · java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算;

    · Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。

1.3.2 getInstance方法

    · Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象

    · Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化

        Calendar c=Calendar.getInstance();

getInstance方法(续1)

    /** 使用Calendar及子类获取时间 */
    public void testGetInstance(){
        Calendar c=Calendar.getInstance();
        //输出Calendar对象所属的实际类型
        System.out.println(c.getClass().getName());
        //getTime方法返回对应的Date对象
        System.out.println(c.getTime());
        //创建GregorianCalendar对象
        GregorianCalendar c1=new GregorianCalendar(2013,Calendar.DECEMBER,25);
        System.out.println(c1.getTime());
    }

1.3.3 设置日期及时间分量    

    /** 设置日期及分量 */
    public void testSet(){
        Calendar c=Calendar.getInstance();
        c.set(Calendar.YEAR,2014);
        c.set(Calendar.MONTH,Calendar.DECEMBER);
        c.set(Calendar.DATE,25);
        System.out.println(c.getTime());
        //Thu Dec 25 16:02:08 CST 2014
        c.set(Calendar.DATE,32);
        System.out.println(c.getTime());
        //Thu Jan 01 16:02:08 CST 2015
    
    }

 1.3.4 获取日期及时间分量

    · 使用Calendar提供的get方法及一些常量可以获取日期及时间分量

    · static int YEAR 提示年份的字段数字

    · static int MONTH 指示月份的字段数字

    · static int DATE 指示一个月份中的第几天

    · static int DAY_OF_WEEK 指示一个星期中的某天,1为星期天

获取日期及时间分量(续1)

    /** 获取时间及分量 */
    public void testGet(){
        Calendar c=Calendar.getInstance();
        c.set(Calendar.YEAR,2014);
        c.set(Calendar.MONTH,Calendar.DECEMBER);
        c.set(Calendar.DATE,25);
        
        int dayOfWeek=c.get(Calendar.DAY_OF_WEEK);
        System.out.println(dayOfWeek);
        //输出为5,表示周四,周日为每周的第1天.
    }

1.3.5 getActualMaximum方法

    · int getActualMaximum(int field)给定此Calendar的时间值,返回指定日历字段可能拥有的最大值,例如:

int year=2014;
    Calendar c=Calendar.getInstance();
    c.set(Calendar.YEAR,year);
    c.set(Calendar.DATE,1);
    for(int month=Calendar.JANUARY;month<=Calendar.DECEMBER;month++){
        c.set(Calendar.MONTH,month);
        System.out.println(year+"年"+(month+1)+"月:"+c.getActualMaximum(Calendar.DATE)+"天");
    }

1.3.6 add方法

    · void add(int filed,int mount)为给定的时间分量的值加上给定的值,若给定的值为负数则是减去给定的值

    /**输出一年后再减去3个月的日期*/
    public void testAdd(){
        Calendar calendar=Calendar.getInstance();
        calendar.add(Calendar.YEAR,1);//加一年
        calendar.add(Calendar.MONTH,-3);//减3个月
        System.out.println("year:"+calendar.get(Calendar.YEAR));
        System.out.println("month"+(calendar.get(Calendar.MONTH)+1));
        System.out.println("day:"+calendar.get(Calendar.DAY_OF_MONTH));
    }

1.3.7 setTime与getTime方法

    · Date getTime()

       使用Date描述Calendar表示的日期并返回

    · void setTime(Date d)

        使Calendar表示Date所描述的日期

    /**通过Date对象设置日期,在获取日期*/
    public void testsetTimeAndGetTime(){
        Calendar calendar=Calendar.getInstance();
        Date date=new Date();
        calendar.setTime(date);
        date=calendar.getTime();
    }

关注公众号,获取学习视频

发布了139 篇原创文章 · 获赞 82 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/houjunkang363/article/details/102579168