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

 更新时间:2021年01月18日 17:04:37   作者:cHAngXdoN  
这篇文章主要介绍了Java中获取时间戳的三种方式对比实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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

Calendar.getInstance().getTimeInMillis() 这种方式速度最慢,这是因为Canlendar要处理时区问题会耗费较多的时间。

到此这篇关于Java中获取时间戳的三种方式对比实现的文章就介绍到这了,更多相关Java 获取时间戳内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot热部署和整合Mybatis的过程

    SpringBoot热部署和整合Mybatis的过程

    热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用,本文给大家详细介绍SpringBoot热部署和整合Mybatis的过程,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • Web容器启动过程中如何执行Java类

    Web容器启动过程中如何执行Java类

    这篇文章主要介绍了Web容器启动过程中如何执行Java类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • SpringBoot密码加密的实现示例

    SpringBoot密码加密的实现示例

    本文主要介绍了SpringBoot密码加密的实现示例,包括引入依赖、配置加密工具、生成加密密钥、加密密码、配置解密,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • java 通过发送json,post请求,返回json数据的方法

    java 通过发送json,post请求,返回json数据的方法

    下面小编就为大家分享一篇java 通过发送json,post请求,返回json数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Java Lambda表达式原理及多线程实现

    Java Lambda表达式原理及多线程实现

    这篇文章主要介绍了Java Lambda表达式原理及多线程实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • idea中java及java web项目的常见问题及解决

    idea中java及java web项目的常见问题及解决

    在IDEA中处理乱码问题主要涉及四个方面:文件编码设置为UTF-8、编辑器默认编码调整、Tomcat运行配置编码设置以及解决cmd中的乱码,此外,详细介绍了在IDEA中创建Web项目的步骤,包括新建Java工程、添加Web框架支持、添加Tomcat依赖库
    2024-09-09
  • springboot2.X整合prometheus监控的实例讲解

    springboot2.X整合prometheus监控的实例讲解

    这篇文章主要介绍了springboot2.X整合prometheus监控的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Java maven三种仓库,本地仓库,私服,中央仓库的配置

    Java maven三种仓库,本地仓库,私服,中央仓库的配置

    今天给大家简单介绍Maven三种仓库的配置,文中有非常详细的解释,对Java初学者很有帮助哟,需要的朋友可以参考下,希望能够给你带来帮助
    2021-09-09
  • Java基础巩固抽象类与接口详解

    Java基础巩固抽象类与接口详解

    在类中没有包含足够的信息来描绘一个具体的对象,这样的类称为抽象类,接口是Java中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成,本文给大家介绍Java抽象类和接口,感兴趣的朋友一起看看吧
    2022-05-05
  • 剑指Offer之Java算法习题精讲二叉树专题篇上

    剑指Offer之Java算法习题精讲二叉树专题篇上

    跟着思路走,之后从简单题入手,反复去看,做过之后可能会忘记,之后再做一次,记不住就反复做,反复寻求思路和规律,慢慢积累就会发现质的变化
    2022-03-03

最新评论