我是靠谱客的博主 光亮墨镜,最近开发中收集的这篇文章主要介绍【JAVASE(5)】JAVASE学习--时间篇,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java中的时间类

一、JDK1.8之前日期和时间的API
    1、public.long.System类提供了大量静态方法,可以获取与系统相关的信息或系统级操作,常用方法:
        public static long currentTimeMillis();
            {返回当前时间与1970年1月1日0时0分0秒一毫秒为单位的时间差}--返回的这个数称为一个时间戳{常用于测试程序效率}

    2、毫秒:
        毫秒的换算:
            1000分之一秒,1000毫秒=1秒
        毫秒作用:
            可以对时间日期进行计算:日期转换成毫秒进行计算
        日期转换成毫秒:
            当前日期:2088-08-08
            时间原点(0毫秒):1970年1月1日00:00:00(格林尼治时间)
                就是计算当前日期到时间原点一共经历了多少毫秒
        注:
            中国属于东八区,会把时间增加8小时:1970年1月1日08:00:00
        毫秒转换为日期:
            1天=24 x 60 x 60秒=86400000毫秒

    3、java.util.Date类
            |--->java.sql.Date:
        表示日期和时间类;类Date表示特定瞬间,精确到毫秒

        注:
            1.两个构造器的使用

构造器一:
    Date():
        创建一个对应当前时间的Date对象,获取当前系统的日期和时间

构造器二:
    new Date(long 时间L);
        创建指定毫秒数的Date对象,即传递毫秒值,把毫秒值转换为Date日期

            2.两个方法的使用

>toString():
    显示当前的年、月、日、时、分、秒

>getTime():
    获取当前Date对象对应的毫秒数时间戳(把日期转换为毫秒值)
    相当于:System.currentTimeMillis();方法
    返回自1970年1月1日08:00:00 CST 以来此Date对象表示的毫秒数

           3.java.sql.Date对应数据库中的日期类型的变量

> 关于实例化:
    new java.sql.Date(long 时间L);

> sql.Date--->util.Date对象,
    直接赋值,多态

> util.Date--->sql.Date对象{

    Date dateSix = new Date();
    java.sql.Date dataSeven=new java.sql.Date(dateSix.getTime());

}


    4、java.text.DateFormat:时间、日期格式化子类的抽象类
        作用:
            格式化(日期-->文本),解析(文本-->日期)
        成员方法:

String format(Date date):
    按照指定模式,把date日期,格式化为符合模式的字符串(文本)
    使用步骤:
        1.创建SimpleDateFormat对象,
            构造方法中传递指定模式

        2.调用SimpleDateFormat对象中的方法format,
            按照构造方法中的指定模式,
            把Date日期格式化为符合模式的字符串(文本)

Date parse(String source)
    把符合模式的字符串(文本),解析为date日期
    使用步骤:
         1.创建SimpleDateFormat对象,
            构造方法中传递指定模式

         2.调用SimpleDateFormat对象中的方法parse,
            把符合构造方法模式的字符串解析为日期

         注:
            public Date parse(String source)throws ParseException
                parse方法声明了一个异常ParseException
                如果字符串和构造方法的模式不一样,那么程序就会抛出此异常
                调用一个抛出异常的方法,就必须处理此异常,
                要么throws继续抛出此异常,要么try catch自己处理这个异常

        DateFormat是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类:

            java.text.SimpleDateFormat extends DateFormat

        SimpleDateFormat的使用:
            SimpleDateFormat对日期Date类的格式化和解析
                1.两个操作
                    1.1格式化:日期-->字符串
                        new SimpleDateFormat();
                        new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

                    1.2解析:格式化的逆过程,字符串-->日期
                        调用parse("指定格式化时间")方法
                2.构造方法:

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

参数:
    String pattern:传递指定模式。【模式:区分大小写】
        y 年;M 月;d 日;H 时;m 分;s 秒
    写对应模式,会把模式替换为对应的日期和时间
        “yyyy-MM-dd HH:mm:ss”

注:
    模式中的字母不能更改,连接模式中的符号可以改变
        “yyyy年MM月dd日 HH时mm分ss秒”

                3.SimpleDateFormat的实例化:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
System.out.println(sdf.format(date));


    5、java.util.Calendar类:日历类
        Calendar类是个日历类,里面提供了很多操作日历字段的方法(YEAR,MONTH,DYA_OF_MONTH,HOUR)
        Calendar类无法直接创建对象使用,里面有个静态方法getInstance(),该方法返回了Calendar类的子类对象
        static Calendar getInstance()使用默认时区和语言环境获得一个日历
        Calendar日历类的使用
            1.实例化:
                1.1调用GregorianCalendar的构造器
                1.2调用Calendar.getInstance()方法
            2.常用方法:

public int get(int field):
    返回给定日历字段值
    参数:
        传递指定的日历字段(YEAR,MONTH,DATE,DYA_OF_MONTH,HOUR,MINUTE,SECOND)
    返回值:
        日历字段代表的具体值

public void set(int field,int value):
    将给定的日历字段设置为给定值
    参数:
        int field:
            传递指定的日历字段(YEAR,MONTH,DATE,DYA_OF_MONTH,HOUR,MINUTE,SECOND)
        int value:
            给指定字段设置的值

public abstract void add(int field,int mount):
    由日历的规则,为给定的日历字段添加或减去指定的时间量
        把指定的字段增加/减少指定的值
    参数:
        int field:
            传递指定的日历字段(YEAR,MONTH,DATE,DYA_OF_MONTH,HOUR,MINUTE,SECOND)
        int mount:增加/减少指定值
            整数:增加     负数:减少

public Date getTime():
    返回一个表示此Calendar时间值(从历元到现在的毫秒变量)的Date对象
        把日历对象转换为日期对象

public Date setTime():
    设置一个表示此Calendar时间值(从历元到现在的毫秒变量)的Date对象


方法的参数:
    int field:
        日历类字段,可以使用Calendar类的静态成员变量获取
    public static final int 【YEAR,MONTH,DATE,DYA_OF_MONTH,HOUR,MINUTE,SECOND】

            3.在日历类中:
                获取月份时:一月是0...十二月是11
                获取星期时:周日是1,周一是2...周六是7
            4.jdk8之前(不含jdk8)的Calendar类存在的问题:
                4.1:可变性:像日期和时间这样的类实际上是不可变的
                4.2:偏移性:Date当中的年份是从1990年开始的,而月份都是从0开始
                4.3:格式化:格式化只对Date有用,Calendar则不行
                4.4:它们也不是线程安全的;不能处理润秒等

二、DK1.8中常用日期和时间的API
    1、LocalDate、LocalTime、LocalDateTime的使用:
        前提:
            这三个类有点类似于Calendar类;在jdk8之后才有的这三个类,在jdk8之前需要额外进行导包Joda-Time
        说明:

1.LocalDateTime
    相比于另外两个类较为常用

2.now();方法作用:
    将三个类进行实例化,调用当前的日期、时间、日期+时间
            
3.of();方法作用:
    指定特定的年月日时分秒不存在偏移量

4.getXxx();方法作用:
    获取Xxx指定的时间
        
5.withXxx();方法作用:
    修改日期相关属性,体现其修改的不可变性

6.plusXxx();方法作用:
    对现有时间进行增加属性处理,体现其修改的不可变性

7.minusXxx();方法作用:
    对现有时间进行减少属性处理,体现其修改的不可变性

    2、Instant的使用:
        类似于java.util.Date类
            1、实例化:调用now();获取本初子午线对应的标准时间
            2、设置偏移量:调用atOffset(ZoneOffset.ofHours(int hour))
            3、toEpochMilli():获取从1970年1月1日0时0分0秒开始到调用此方法时的毫秒数--->Date类的getTime()
            4、ofEpochMilli(long XxxL);通过给定的毫秒数,获取Instant实例-->Date(long millis)

    3、DateTimeFormatter:格式化或解析日期、时间;类似于SimpleDateFormat
        1.实例化:
            方式一:
                预定义标准格式:ISO_LOCAL_DATE_TIME,ISO_LOCAL_DATE,ISO_LOCAL_TIME
            方式二:
                本地化相关的格式,如:
                    ofLocalizedDateTime();
                    ofLocalizedDateTime(FormatStyle.LONG);
                其中

 {FormatStyle.LONG/FormatStyle.MEDIUM/FormatStyle.SHORT:适用于LocalDateTime}

                本地化相关的格式:如:
                    ofLocalizedDate()
                其中

{
    FormatStyle.FULL/FormatStyle.LONG/FormatStyle.MEDIUM/FormatStyle.SHORT:
    适用于LocalDate
}

            方式三:
                自定义:如ofPattern("yyy-MM-dd hh:mm:ss E")
        2.格式化:
            先实例化LocalXxx,然后再调用format()方法返回新的字符串对象
        3.解析:
            调用DateTimeFormatter实例对象的parse()方法传递正确参数


   4、JDK8之前和JDK8中日期、时间相关的类有:
        java.util.Date和java.sql.Date  -> Instant
        SimpleDateFormat   ---->  DateTimeFormatter
        Calendar     ---->    LocalDate、LocalTime、LocalDateTime

   5、日期时间api的迭代
        第一代:jdk1.0 Date类
        第二代:jdk1.1 Calendar类,一定程度上替代了Date类
        第三代:jdk1.8 提出了新的一套api

   6、jdk8之前的日期时间的API测试
        1.System类中的currentTimeMillis();
        2.java.util.Date和子类java.sql.Date
        3.SimpleDateFormat
        4.Calendar

时间类程序小实例:

private static void demo01() {
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        创建SimpleDateFormat对象,构造方法中传递指定模式

        //String format(Date date),
            按照指定模式,把date日期,格式化为符合模式的字符串

        Date date=new Date();
        String d = sdf.format(date);
            调用SimpleDateFormat对象中的方法format,
            按照构造方法中的指定模式,
            把Date日期格式化为符合模式的字符串(文本)

        System.out.println(date);
            Tue Sep 29 16:12:35 CST 2019

        System.out.println(d);
            2019年09月29日 16时12分35秒
}

以上是本篇小节,不喜勿喷,感谢理解。

相关链接:
​【JAVASE(6)】JAVASE学习--字符串篇_lixxkv的博客-CSDN博客
【JAVASE(4)】JAVASE学习--线程篇_lixxkv的博客-CSDN博客

最后

以上就是光亮墨镜为你收集整理的【JAVASE(5)】JAVASE学习--时间篇的全部内容,希望文章能够帮你解决【JAVASE(5)】JAVASE学习--时间篇所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部