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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VSCODE 打造完美java开发环境「建议收藏」

    VSCODE 打造完美java开发环境「建议收藏」vscodeJava开发环境配置(此博客已更新,之前的排版不利于阅读)使用vscode后,你可能无法忍受eclipse:)最后更新时间:2018-07-01(博客地址)系统需安装jdk1.8,配置好环境变量JAVA_HOME打开vscode,安装java相关插件LanguagesupportforJava™forVisualStud…

    2022年7月20日
  • js免费调用天气API

    js免费调用天气APIjs调用天气API文档参考链接:天气API文档1、首先登陆天气API进行用户注册点击右上角进行注册、登录2、打开API文档如下图其中appid和appsecret则在天气API控制器中查看其中appid和version和appsecret3者为必填选项,例如https://www.tianqiapi.com/api?version=v9&appid=84122144&appsecret=m70vbv6Acityid、city、ip则代表三种查询方式(三选一)(城市i

    2022年10月8日
  • 彩色激光打印机留下追踪代码 美国国安局已中招

    彩色激光打印机留下追踪代码 美国国安局已中招

    2022年3月3日
  • PyPDF2模块[通俗易懂]

    PyPDF2模块[通俗易懂]1、PdfFileReader构造方法:PyPDF2.PdfFileReader(stream,strict=True,warndest=None,overwriteWarnings=True)stream:*File对象或支持与File对象类似的标准读取和查找方法的对象,也可以是表示PDF文件路径的字符串。*strict(bool):确定是否应该警告用户所用的…

    2022年6月23日
  • T-SQL基础(1) – T-SQL查询和编程基础

    T-SQL基础(1) – T-SQL查询和编程基础

    2021年8月26日
  • 原生js之字符串截取[通俗易懂]

    原生js之字符串截取[通俗易懂]字符串截取的方法有三种:slice(start,end+1),substring(start,end+1),substr(start,n).slice(start,end+1):两个参数时,参数指截取位置,截取含头不含尾;一个参数时,默认截取到字符串结尾。参数可以为负数,负数就倒着数位置。substring(start,end+1):两个参数时,参数指截取位置,截取含头不含…

    2022年5月24日

发表回复

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

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