zoukankan      html  css  js  c++  java
  • Day03:日期操作 / 集合框架(上)

    日期操作

    Java中的时间

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

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

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

    在java中获取当前时间,可以使用java.util.Data类和java.util.Calendar类完成。其中,Date类主要封装了系统的日期和时间的信息,Calendar类则会根据系统的日历来解释Date对象。

    Date类

     Date类表示系统特定的时间戳,可以精确到毫秒。Date对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。

     Date类中的常用方法
    方法描述
    boolean after(Date when) 判断此日期是否在指定日期之后
    boolean before(Date when) 判断此日期是否在指定日期之前
    int compareTo(Date anotherDate) 比较两个日期的顺序
    boolean equals(Object obj) 比较两个日期的相等性
    long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数
    String toString() 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。
    其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat)

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

     Calendar类

    Calendar类是一个抽象类,它为特定瞬间与YEAR、MONTH、DAY_OF——MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

    创建Calendar对象不能使用new关键字,因为Calendar类是一个抽象类,但是它提供了一个getinstance()方法来获得Calendar类的对象。

     Calendar类的常用方法
    方法描述
    void add(int field, int amount) 根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount
    boolean after(Object when) 判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回判断结果
    boolean before(Object when) 判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回判断结果
    void clear() 清空 Calendar 中的日期时间值
    int compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日
    00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0
    int get(int field) 返回指定日历字段的值
    int getActualMaximum(int field) 返回指定日历字段可能拥有的最大值
    int getActualMinimum(int field) 返回指定日历字段可能拥有的最小值
    int getFirstDayOfWeek() 获取一星期的第一天。根据不同的国家地区,返回不同的值
    static Calendar getInstance() 使用默认时区和语言坏境获得一个日历
    static Calendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历
    static Calendar getInstance(TimeZone zone,
    Locale aLocale)
    使用指定时区和语言环境获得一个日历
    Date getTime() 返回一个表示此 Calendar 时间值(从格林威治时间 1970 年 01 月 01 日 00 时
    00 分 00 秒至现在的毫秒偏移量)的 Date 对象
    long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位
    void set(int field, int value) 为指定的日历字段设置给定值
    void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
    void set(int year, int month, int date, int hourOfDay,
    int minute, int second)
    设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值
    void setFirstDayOfWeek(int value) 设置一星期的第一天是哪一天
    void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值

     Calendar对象可以调用set()方法将日历翻倒任何一个时间,当参数year取负数时表示公元前。Calendar对象调用get()方法可以获取有关年、月、日等时间信息。

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

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

     getInstance方法

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

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

            Calendar c=Calendar.getInstance();

    设置日期及时间分量

    获取日期及时间分量

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

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

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

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

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

    getActualMaximum方法

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

    dd方法

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

    setTime与getTime方法

        · Date getTime()

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

        · void setTime(Date d)

            使Calendar表示Date所描述的日期

    实例:

    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    //Calendar 类
    public class Six {
        public static void main(String[] args) {
            //        testGetInsrance();
            //        testGet();
            //        testgetActualMaximum();
            //        testAdd();
            testsetTimeAndGetTime();
        }
        //    设置日期及时间分量    GetInsrance()
        static void testGetInsrance() {
            Calendar c=Calendar.getInstance();
            c.set(c.YEAR, 2019);
            c.set(c.MONTH, c.DECEMBER);
            c.set(c.DATE, 25);
            System.out.println(c.getTime());
            c.set(c.DATE, 32);
            System.out.println(c.getTime());
        }
        //获取日期及时间分量
        static void testGet() {
            Calendar c=Calendar.getInstance();
            c.set(c.YEAR, 2019);
            c.set(c.MONTH, c.DECEMBER);
            c.set(c.DATE, 25);
            int dayweek=c.get(c.DAY_OF_WEEK);
            System.out.println(c.getTime());
            System.out.println(dayweek);
        }
        //获取年份的最大值getActualMaximum方法
        static void testgetActualMaximum() {
            int year=2019;
            Calendar c=Calendar.getInstance();
            c.set(c.YEAR, year);
    
            c.set(c.DATE, 1);
            for(int month=c.JANUARY;month<=c.DECEMBER;month++){
                c.set(c.MONTH, month);
                System.out.println(year+"n"+(month+1)+"y"+c.getActualMaximum(c.DATE)+"r");
            }
        }
        //分量的值加减
        static void testAdd() {
            Calendar c=Calendar.getInstance();
            c.add(c.YEAR, 1);
            c.add(c.MONTH, -3);
            System.out.println(c.get(c.YEAR));
        }
        // setTime与getTime方法
        static void testsetTimeAndGetTime() {
            Calendar c=Calendar.getInstance();
            Date d=new Date();
            c.setTime(d);
            d=c.getTime();
            System.out.print(c.getTime());
        }
    }

    DateFormat 类

     DateFormat是日期、时间格式化子类的抽象类,它以与语言无关的方法格式化并解析日期或时间。

    在创建DateFormat对象时不能使用new关键字,而使用DateFormat类中的静态方法getDateInstance().

    ateFormat类的常用方法
    方法描述
    String format(Date date) 将 Date 格式化日期/时间字符串
    Calendar getCalendar() 获取与此日期/时间格式相关联的日历
    static DateFormat getDateInstance() 获取具有默认格式化风格和默认语言环境的日期格式
    static DateFormat getDateInstance(int style) 获取具有指定格式化风格和默认语言环境的日期格式
    static DateFormat getDateInstance(int style,
    Locale locale)
    获取具有指定格式化风格和指定语言环境的日期格式
    static DateFormat getDateTimeInstance() 获取具有默认格式化风格和默认语言环境的日期/时间
    格式
    static DateFormat getDateTimeInstance(int
    dateStyle,int timeStyle)
    获取具有指定日期/时间格式化风格和默认语言环境的
    日期/时间格式
    static DateFormat getDateTimeInstance(int
    dateStyle,int timeStyle,Locale locale)
    获取具有指定日期/时间格式化风格和指定语言环境的
    日期/时间格式
    static DateFormat getTimeInstance() 获取具有默认格式化风格和默认语言环境的时间格式
    static DateFormat getTimeInstance(int style) 获取具有指定格式化风格和默认语言环境的时间格式
    static DateFormat getTimeInstance(int style,
    Locale locale)
    获取具有指定格式化风格和指定语言环境的时间格式
    void setCalendar(Calendar newCalendar) 为此格式设置日历
    Date parse(String source) 将给定的字符串解析成日期/时间

    SimpleDateFormat 类

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

     构造方法

            SimpleDateFormat()

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

        · 方法

            final String format(Date date)  Date=>String

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

    日期/时间格式中的字母及其含义与示例
    字母含义示例
    y 年份。一般用 yy 表示两位年份,yyyy 表示 4 位年份 使用 yy 表示的年扮,如 11;
    使用 yyyy 表示的年份,如 2011
    M 月份。一般用 MM 表示月份,如果使用 MMM,则会
    根据语言环境显示不同语言的月份
    使用 MM 表示的月份,如 05;
    使用 MMM 表示月份,在 Locale.CHINA
    语言环境下,如“十月”;在 Locale.US
    语言环境下,如 Oct
    d 月份中的天数。一般用 dd 表示天数 使用 dd 表示的天数,如 10
    D 年份中的天数。表示当天是当年的第几天, 用 D 表示 使用 D 表示的年份中的天数,如 295
    E 星期几。用 E 表示,会根据语言环境的不同, 显示不
    同语言的星期几
    使用 E 表示星期几,在 Locale.CHINA 语
    言环境下,如“星期四”;在 Locale.US 语
    言环境下,如 Thu
    H 一天中的小时数(0~23)。一般用 HH 表示小时数 使用 HH 表示的小时数,如 18
    h 一天中的小时数(1~12)。一般使用hh表 示小时数 使用 hh 表示的小时数,如 10 (注意 10 有
    可能是 10 点,也可能是 22 点)
    m 分钟数。一般使用 mm 表示分钟数 使用 mm 表示的分钟数,如 29
    s 秒数。一般使用 ss 表示秒数 使用 ss 表示的秒数,如 38
    S 毫秒数。一般使用 SSS 表示毫秒数 使用 SSS 表示的毫秒数,如 156


    日期转String

    format方法

    语法:

       SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date=new Date();
            String dateStr=sdf.format(date);
    

    String转日期

    parse方法

    语法:

      String str="2013-12-25";
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
            Date date=sdf.parse(str);

    实例: 

    //SimpleDateFormat类格式化
        public static void main(String[] args) {
            SimpleDateFormat2();
            System.out.println();
            SimpleDateFormat1();
        }
        //字符串转日期
        static void SimpleDateFormat2() {
            SimpleDateFormat sdf =new SimpleDateFormat("y-MM-dd HH:mm:ss" );
            String str = "2020-1-5 12:14:54";
            try {
                Date d = sdf.parse(str);
                //                字符串通过格式  yyyy/MM/dd HH:mm:ss 转换为日期
                System.out.printf(str,d.toString());
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        //日期转字符串
        static void SimpleDateFormat1() {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss SSS");
            Date d=new Date();
            String sr=sdf.format(d);
            //当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出
            System.out.println(sr);
            SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
            Date d2=new Date();
            String d3=sdf1.format(d2);
            //        当前时间通过 yyyy-MM-dd 格式化后的输出
            System.out.println(d3);
        }
  • 相关阅读:
    vue项目的骨架及常用组件介绍
    细谈最近上线的Vue2.0项目(一)
    【请求之密】payload和formData有什么不同?
    【19道XSS题目】不服来战!
    Hexo+Coding搭建免费博客之Hexo代码上传到Coding实现公网访问站点(三)
    Hexo+Coding搭建免费博客之Next主题设置(二)
    Hexo+Coding搭建免费博客之Hexo安装部署(一)
    Openstack-Queens详细安装教程
    ESXI安装报错,No Network adapters were detected...
    VMware ESXi 5.5组件安装过程记录
  • 原文地址:https://www.cnblogs.com/wsnb8/p/11307814.html
Copyright © 2011-2022 走看看