Java中获取时间戳

Java中获取时间戳**Java语言中关于三种时间戳的获取之心得**最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。1.System.currentTimeMillis()System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短。开发中如果设计到效率问题,推荐使用此种方式获取。System.currentTimeMillis()2.newDate().getTime()除

大家好,又见面了,我是你们的朋友全栈君。

**

Java中获取时间戳 三种方式对比

**
最近项目开发过程中发现了项目中获取时间戳的业务。而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。

1.System.currentTimeMillis()

System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短。开发中如果设计到效率问题,推荐使用此种方式获取。

System.currentTimeMillis()

2.new Date().getTime()

除了System类,使用量很大的应该就是Date类了,包括我也一样开发中如果涉及到日期的首先会想到Date,但date类中获取时间戳并不是最有效率的,翻看他的源码:
无参构造如下?

public Date() { 
   
    this(System.currentTimeMillis());
}

从源码可以看出,new Date()其实就是调用了System.currentTimeMillis(),再传入自己的有参构造函数。不难看出,如果只是仅仅获取时间戳,即使是匿名的new Date()对象也会有些许的性能消耗, 从提升性能的角度来看,只是仅仅获取时间戳,不考虑时区的影响(时区为什么会有影响看下一段),直接调用System.currentTimeMillis()会更好一些。

3.Calendar.getInstance().getTimeInMillis()

这种方式其实是速度最慢,看其源码就会发现,Canlendar是区分时区的,因为要处理时区问题会耗费很多的时间。

附测试如下:

import java.util.Calendar;  
import java.util.Date;  
  
public class TimeTest { 
     
    private static long _TEN_THOUSAND=10000;  
    public static void main(String[] args) { 
     
        long times=1000*_TEN_THOUSAND;  
        long t1=System.currentTimeMillis();  
        testSystem(times);  
        long t2=System.currentTimeMillis();  
        System.out.println(t2-t1);  
        testCalander(times);  
        long t3=System.currentTimeMillis();  
        System.out.println(t3-t2);  
        testDate(times);  
        long t4=System.currentTimeMillis();  
        System.out.println(t4-t3);  
    }  
      
    public static void testSystem(long times){ 
   //use 188 
        for(int i=0;i<times;i++){ 
     
            long currentTime=System.currentTimeMillis();  
        }  
    }  
  
    public static void testCalander(long times){ 
   //use 6299 
        for(int i=0;i<times;i++){ 
     
            long currentTime=Calendar.getInstance().getTimeInMillis();  
        }  
    }  
      
    public static void testDate(long times){ 
     
        for(int i=0;i<times;i++){ 
     
            long currentTime=new Date().getTime();  
        }  
          
    }  
  
}  

效果如下

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135105.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微商分销功能不能用了

    微商分销功能不能用了“三级以上分销将会被停止支付功能和封停账号”,日前一则“不利”消息彻底引爆微商的主要阵地——微信朋友圈。一时间关于分销三级变二级、微商寒冬将至的说法再次疯传。自央视曝光部分微商涉嫌传销之后,微信今年接连对微商们“动刀”,强化管理意在行业正规化发展,失去多级分销之后,依靠内容深度揽客的方式成为微商转型的方向。微商连遭重创刚刚过去的一周,微商们再次体验到了人生的跌宕起伏。认证为腾讯微信

    2022年5月13日
    45
  • 后端框架SpringBoot入门[通俗易懂]

    后端框架SpringBoot入门[通俗易懂]SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员…

    2022年6月3日
    43
  • 史上最全面的JTAG和SWD接口的定义/STM32/STM8工程师的福音/JTAG转SWD接口仿真/告别杂乱的仿真线/终于讲清楚了JTAG/SWD

    史上最全面的JTAG和SWD接口的定义/STM32/STM8工程师的福音/JTAG转SWD接口仿真/告别杂乱的仿真线/终于讲清楚了JTAG/SWD一、前言作为一名嵌入式工程师,相信大家都十分清楚MCU开发或者ARM开发都避免不了关键的研发过程,产品研发过程中的程序调试更是举足轻重般的存在。从8051内核到ARM内核,自己也接触了很多的调试工具和调试手段;今天在此给大家分享一下使用ST-LINK仿真调试器的一些基础知识和好物推荐。二、ST-LINK仿真器说明ST-Link是用于STM8和STM32微控制器在线调试器和编程器,ST-Link本身具有SWIM、JTAG/SWD通信接口,适用于STM8和STM32微控制器的软件调试仿真。

    2022年4月25日
    51
  • Word域代码:TOA,自动生成目录

    Word域代码:TOA,自动生成目录 示例:TOC/o”1-3″/h/z/u———————————————————————–域代码:TOA(引文目录)域域代码:TOA(引文目录)域{TOC[Switches]}建立一个目录。TOC域根据标题级别、指定样式或由TC(目录项)域指定的项目来收集目录项。在使用“插入”

    2022年5月7日
    133
  • 工作站与主域间的信任关系失败_变色龙工作站无法卸载

    工作站与主域间的信任关系失败_变色龙工作站无法卸载症状:登陆域用户,出现错误“此工作站和主域间的信任关系失败”,并无法登陆解决方案:1、使用本地用户登录,更改当前“域”为“工作组”(如默认的WORKGROUP等),并输入具有域管理权限的用户名、密码,随后此电脑上的“域”将会被删除;2、重启电脑3、重新使用域用户信息登陆域4、重启电脑5、登陆成功 或者使用域管理员身份登陆DC服务器,从域中删除此计算机应该也可以。…

    2022年10月10日
    2
  • HTTP_REFERER的用法及伪造

    HTTP_REFERER的用法及伪造

    2021年10月30日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号