关于System.currentTimeMillis()的理解

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 关于System.currentTimeMillis()的理解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

System.currentTimeMillis() 获取的是当前时刻距离 1970-1-1 00:00:00.000(0时区) 的毫秒数。注意

  • 1970年1月1日0时0分0秒0毫秒,这个时刻是0时区的。不是东八区的 1970-1-1 00:00:00.000
  • 表述上只是到达了0毫秒,但其实后续的值都是0,如 1970年1月1日0时0分0秒0毫秒0微秒0纳秒0皮秒0...
  • 正因为该方法是当前时刻到0时区的毫秒数,所以在这里时刻,无论在哪个时区获取,值都是一样的(意思是不管你把操作系统的时区改成什么,在同一时刻获取的值都是绝对一样的)
package com.wyf.test.timezone.example00;

import java.time.ZoneId;

/**
 * 本类用于测试,在同一时刻调用 System.currentTimeMillis(),不会因为你的时区不同而获取到不同的数值
 * <p>
 * 测试方法:初始时区在上海,运行一次,得到时间戳1,接着切换操作系统的时区到东京,再运行一次,得到时间戳2。时间戳2和时间戳1的差值,是你切换时区的耗时。
 * <p>
 * 结论:可以看到耗时远远没有达到两个时区的差值1小时(差值仅仅是你切换OS的时区的手速)。说明无论你在什么时区,同一时刻获取的 System.currentTimeMillis() 的值是一样的
 * <p>
 * 实验值:
 * OSTimezone: Asia/Shanghai,timestamp: 1582855042967
 * OSTimezone: Asia/Tokyo,timestamp: 1582855047352
 * <p>
 * long millisSec = 1582855047352L - 1582855042967L;
 * System.out.println("相差毫秒数:" + millisSec + ",秒数:" + (millisSec / 1000));
 * 打印:相差毫秒数:4385,秒数:4
 *
 * @author Stone
 * @version V1.0.0
 * @date 2020/2/27
 */
public class TestSystemCurrentTimeMillis {
    public static void main(String[] args) throws InterruptedException {
        long timestamp = System.currentTimeMillis();
        System.out.println("OSTimezone: " + ZoneId.systemDefault() + ",timestamp: " + timestamp);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/135281.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!