zoukankan      html  css  js  c++  java
  • 一脚踩进java之基础篇25——常用API(Date、Calendar)

    一、Date

    1.1 Date类概述

    类 Date 表示特定的瞬间,精确到毫秒。

    继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。

    //创建日期对象,把当前的毫秒值转成日期对象
    Date date = new Date(1607616000000L);
    System.out.println(date);
    //打印结果:Fri Dec 11 00:00:00 CST 2020

    可是将毫秒值转成日期后,输出的格式不利于我们阅读,继续查阅API,Date中有getYear、getMouth等方法,可以他们已经过时,继续往下查阅,看到了toString方法。

    点开toString()方法查阅,原来上面打印的date对象就是默认调用了这个toString方法,并且在这个方法下面还有让我们参见toLocaleString方法,点进去,这个方法又过时了,从 JDK 1.1 开始,由 DateFormat.format(Date date) 取代。

    既然这个方法被DateFormat.format(Date date) 取代,那么就要去查阅DateFormat类。

    1.2 Date类常用方法

    把日期对象转换成对应的时间毫秒值

    二、DateFormat

    2.1 DateFormat类概述

    DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。

    我们通过这个类可以帮我们完成日期和文本之间的转换。

    继续阅读API,DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。

    2.2 日期格式

    要格式化一个当前语言环境下的日期也就是日期 -> 文本),要通过下面的方法来完成。DateFormat是抽象类,我们需要使用其子类SimpleDateFormat来创建对象。

    构造方法

    DateFormat类方法

    代码演示:
    //创建日期格式化对象,在获取格式化对象时可以指定风格
    DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//对日期进行格式化
    Date date = new Date(1607616000000L);
    String str_time = df.format(date);
    System.out.println(str_time);//2020年12月11日

    DateFormat类的作用:即可以将一个Date对象转换为一个符合指定格式的字符串,也可以将一个符合指定格式的字符串转为一个Date对象。

    指定格式的具体规则我们可参照SimpleDateFormat类的说明,这里做简单介绍,规则是在一个字符串中,会将以下字母替换成对应时间组成部分,剩余内容原样输出:

    当出现y时,会将y替换成年

    当出现M时,会将M替换成月

    当出现d时,会将d替换成日

    当出现H时,会将H替换成时

    当出现m时,会将m替换成分

    当出现s时,会将s替换成秒

    2.3DateFormat类常用方法

     l  format方法,用来将Date对象转换成String

    l  parse方法,用来将String转换成Date(转换时,该String符合指定格式,否则不能转换)。

    代码演示:
    练习一:把Date对象转换成String
         Date date = new Date(1607616000000L);//Fri Dec 11 00:00:00 CST 2020
        DateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”);
        String str = df.format(date);
        //str中的内容为2020年12月11日
    
    练习二:把String转换成Date对象
        String str = ”2020年12月11日”;
        DateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”);
        Date date = df.parse( str );
        //Date对象中的内容为Fri Dec 11 00:00:00 CST 2020

    三、Calendar

    3.1Calendar类概念

    Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。

    Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象,如下:

    l  Calendar类静态方法

     Calendar c = Calendar.getInstance();  //返回当前时间

     

    3.2Calendar类常用方法

     l  public static Calendar getInstance() //获取日期对象

    l  public int get(int field)  //获取时间字段值,字段参见帮助文档

    n  YEAR

    n  MONTH 月,从0开始算起,最大110代表1月,11代表12月。

    n  DATE

    n  HOUR

    n  MINUTE

    n  SECOND

    代码演示:
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);

    l  public void add(int field,int amount)  //指定字段增加某值

    代码演示:
        Calendar c = Calendar.getInstance();
        //修改当前时间为3天后
        c.add(Calendar.DATE, 3);
        //修改当前时间为5小时后
        c.add(Calendar.HOUR, 5);

    l  public final void set(int field,int value)//设置指定字段的值

    代码演示:
        Calendar c = Calendar.getInstance();
        //设置时间为2020年5月20日
        c.set(Calendar.YEAR, 2020);
        c.set(Calendar.MONTH, 4);
        c.set(Calendar.DATE, 20);

    l  public final Date getTime() //获取该日历对象转成的日期对象

    代码演示:
    Calendar c = Calendar.getInstance();
        Date d = c.getTime();

    3.3注意事项

    西方星期的开始为周日,中国为周一。

    Calendar类中,月份的表示是以0-11代表1-12月。

    日期是有大小关系的,时间靠后,时间越大。

    四、日期类练习

    4.1求出自己已经出生多少天

    思路:

    1.获取当前时间对应的天数

            2.获取自己出生日期对应的天数

            3.两个时间相减(当前时间天数 出生日期天数)

    代码实现:

    public static void main(String[] args){
        Calendar my = Calendar.getInstance();
        Calendar c = Calendar.getInstance();
        //设置出生年月日 1995-05-10
        my.set(Calendar.YEAR, 1995);
        my.set(Calendar.MONTH, 4);
        my.set(Calendar.DATE, 10);
        //获取时间中的天数
        int day = c.get(Calendar.DATE);
        int myDay = my.get(Calendar.DATE);
        System.out.println(day - myDay);
    }

    4.2求出今天距离2020年1月1日还有多少天

    思路:

    1.获取当前时间对应的天数

            2.获取202011日对应的天数

            3.两个时间相减(202011日的天数 当前时间天数)

    代码实现:

    public static void main(String[] args){
        Calendar my = Calendar.getInstance();
        Calendar c = Calendar.getInstance();
        //设置年月日 2020-01-01
        my.set(Calendar.YEAR, 2020);
        my.set(Calendar.MONTH, 0);
        my.set(Calendar.DATE, 1);
        //获取时间中的天数
        int day = c.get(Calendar.DATE);
        int myDay = my.get(Calendar.DATE);
        System.out.println(myDay - day);
    }

     

    1.1     DateFormat类常用方法

  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/smilehq/p/12872005.html
Copyright © 2011-2022 走看看