JDK7 Date类

时间相关知识点

全世界的时间,有一个统一的计算标准

格林尼治时间/格林威治时间(Greenwich Mean Time)简称 GMT

它的计算核心是:地球自转一天是24小时,太阳直射时为正午12点。

但是由于GMT的误差太大,目前世界的标准世界(UTC)已经替换为:原子钟。

中国标准时间:世界时间+8小时

计算机的时间原点
时间原点:1970年1月1日0点0分0秒

为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。

时间单位换算
1秒 = 1000毫秒
1毫秒 = 1000微秒
1微妙 = 1000纳秒

Date时间类

Date是JDK写好的javabean类,用来描述时间,精确到毫秒。

包名:java.util.Date

利用空参构造可以获取当前系统的时间

import java.util.Date;

public class JDK7_Date {
    public static void main(String[] args) {

        // 获取当前系统的时间
        Date d1 = new Date();
        System.out.println(d1);

    }
}

利用带参构造可以获取指定的时间,它的带参构造是long类型的,所以我们指定的参数后缀需要加上L

import java.util.Date;

public class JDK7_Date {
    public static void main(String[] args) {

        // 获取指定时间
        Date d2 = new Date(0L);
        System.out.println(d2);
        
    }
}

这个位置我的实参为0L,也就是说返回值是从时间原点往后0毫秒的时间点

输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=64959:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Date
Thu Jan 01 08:00:00 CST 1970

为什么输出结果为1970年1月1日8点呢?因为我们中国处于东八区,所以我们的时间为世界时间+8个小时。

.setTime 修改时间

import java.util.Date;

public class JDK7_Date {
    public static void main(String[] args) {


        // 获取指定时间
        Date d2 = new Date(0L);
        
        // 修改时间
        d2.setTime(1000L);
        System.out.println(d2);

    }
}
输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=49479:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Date
Thu Jan 01 08:00:01 CST 1970

可以看到我们的时间为1970年1月1日8点0分1秒,因为我们修改了1000毫秒,1000毫秒 = 1秒。

.getTime 获取当前时间的毫秒值

import java.util.Date;

public class JDK7_Date {
    public static void main(String[] args) {


        // 获取指定时间
        Date d2 = new Date(0L);

        // 修改时间
        d2.setTime(1000L);

        // 获取当前时间的毫秒值
        long time = d2.getTime();
        System.out.println(time);
    }
}
输出结果
"C:\Program Files\Java\jdk-17.0.5\bin\java.exe" "-javaagent:E:\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=64715:E:\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath E:\JAVA_Code\test\out\production\test;E:\JAVA_Code\test\ilb\gson-2.6.2.jar JDK7_Date
1000

我们可以看到,我们获取了从时间原点-当前d2对象时间一共过去了多少毫秒。


练习:时间计算

需求1:打印时间原点开始一年之后的时间。

import java.util.Date;

public class JDK7_Date {
    public static void main(String[] args) {

        // 获取时间原点
        Date d = new Date(0L);
        // 将时间原点以毫秒的形式赋值给time变量
        long time = d.getTime();
        // 在时间原点的基础上加上一年的时间
        time = time + 1000L * 60 * 60 * 24 * 365;
        // 设置时间原点为
        d.setTime(time);

        System.out.println(d);

    }
}
注:当在时间原点的基础上加上一年的时间时,可能后面的数值比较大,超过int类型的范围,所以加上L。

需求2:定义任意两个Date对象,比较哪一个时间在前,哪一个时间在后。

import java.util.Random;
public class JDK7_Date {
    public static void main(String[] args) {

        // 定义两个随机时间
        Date d1 = new Date(Math.abs(new Random().nextInt()));
        Date d2 = new Date(Math.abs(new Random().nextInt()));

        System.out.println(d1);
        System.out.println(d2);
        // 获取两个Date对象的毫秒值
        long time = d1.getTime();
        long time1 = d2.getTime();
        // 进行比较
        if(time > time1){
            System.out.println("time 在 time1 后面");
        }else if (time < time1){
            System.out.println("time1 在 time 后面");
        }else {
            System.out.println("时间相同");
        }
        
    }
}

总结

  1. 如何创建日期对象?

  • Date date = new Date();

  • Date date = new Date(毫秒);

  1. 如何修改时间对象的毫秒值

  • setTime(毫秒值);

  1. 如何获取时间对象中的毫秒值

  • getTime();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值