0
点赞
收藏
分享

微信扫一扫

JDK7相关时间类1之Date

一:时间的相关知识

     全世界的时间有一个统一的计算标准,地球有经纬线之分,绕太阳一圈为1年,地球自转为一天。在同一条经线上的时间是一样的,全世界有24个时区。

     在本初子午线的右侧一直到东12区,称为东部地区,它是在标准时间上增加时间,即我国在东八区,则在标准时间上加8个小时。

     在本初子午线的左侧以及东12区的右边为西部地区。在标准时间上减少时间。

 二:世界时间的使用标准

     在2012年之前,世界上使用的是格林尼治或者格林威治时间。简称GMT。它的计算核心为:地球自转一天是24个小时,太阳直射点时间为正午12点。这样计算的时间误差太大。

     在2012年,以原子钟作为世界的标准时间(UTC)。

     原子钟:利用铯原子钟的震动的频率计算出来的时间,作为世界的标准时间,振动9,192,631,770次等于1秒。

三:Date时间类

1.  Date类是一个JDK已经写好了的javabean类,用来描述时间,精确到毫秒。

  • 利用空参构造创建对象,默认表示系统当前时间。
  • 利用有参构造创建对象,表示指定时间。

举例截图如下:

                        JDK7相关时间类1之Date_Math

运行结果截图如下:

                        JDK7相关时间类1之Date_创建对象_02

从上面可以看出,第一个获取的是默认的时间,即为打印时刻的时间,第二个是指定的时间,即为计算机原点时间1970年1月1日。

2.Date常用的方法

public void setTime(long time)    设置/修改毫秒值

public long getTime()             获取时间对象的毫秒值

举例截图如下:

                        JDK7相关时间类1之Date_System_03

运行结果截图如下:

                        JDK7相关时间类1之Date_创建对象_04

从上面可以看出,第一个打印的是默认的时间,第二个是利用set方法所打印的时间。第三个是利用get的方法获取修改时间后的毫秒值。

四:利用Date实现两个需求

需求1:打印时间原点三年后的时间

截图如下:

                        JDK7相关时间类1之Date_Math_05

                        JDK7相关时间类1之Date_创建对象_06

                        JDK7相关时间类1之Date_System_07

  需求2:定义任意3个Date对象,比较一下哪个时间在最后

截图如下:

                        JDK7相关时间类1之Date_Math_08

多运行几次看结果:

                        JDK7相关时间类1之Date_System_09

                        JDK7相关时间类1之Date_创建对象_10

                        JDK7相关时间类1之Date_创建对象_11

发现每次结果都不同,说明判断正确。

案例所有代码如下:

 public static void main(String[] args) {
        //利用空参构造创建对象,获取默认的时间
        //System.out.println(new Date());
        //利用有参构造创建对象,获取指定的时间
        //System.out.println(new Date(0L));


        //1.创建时间对象
        Date d1 = new Date();
        //打印时间
        System.out.println(d1);

        //利用set方法区修改时间
        d1.setTime(2000L);
        //2.再次打印时间
        System.out.println(d1);

        //3.利用get方法获取是间的毫秒值
        long l = d1.getTime();


        //在main方法中调用书写的方法
        System.out.println(getTime());

        System.out.println("-----------------------------");

        //需求2:定义任意3个Date对象,比较一下哪个时间在最后
        //1.获取随机数
        Random r = new Random();

        //2,创建三个时间对象
        Date d3 = new Date(Math.abs(r.nextInt()));
        Date d4 = new Date(Math.abs(r.nextInt()));
        Date d5 = new Date(Math.abs(r.nextInt()));

        //3.利用get方法获取时间的毫秒值
        long time3 = d3.getTime();
        long time4 = d4.getTime();
        long time5 = d5.getTime();


        //4.利用判断语句时间的先后顺序
        if (time3 > time4 && time3 > time5) {
            System.out.println("time3时间在最后");
        } else if (time4 > time3 && time4 > time5) {
            System.out.println("time4 时间在最后");
        } else if (time5 > time3 && time5 > time3) {
            System.out.println("time5时间在最后");
        }


    }

    //定义一个方法来实现需求1
    private static Date getTime() {
        //需求1:打印时间原点三年后的时间
        //1.创建一个对象,表是时间原点
        Date d2 = new Date();

        //2.得到时间原点对应的时间毫秒值
        long time2 = d2.getTime();

        //3.在时间原点对应的毫秒值上在加上3年的毫秒值
        time2 = time2 + 3 * 365 * 24 * 60 * 60 * 1000L;

        //4.再将计算之后的时间毫秒值设置回d2当中
        d2.setTime(time2);

        //打印设置之后的时间
        //System.out.println(d2);

        return d2;

    }
}

举报

相关推荐

0 条评论