前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java中获取时间戳

Java中获取时间戳

作者头像
全栈程序员站长
发布2022-08-18 19:19:13
2.4K0
发布2022-08-18 19:19:13
举报

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

**

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

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

1.System.currentTimeMillis()

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

代码语言:javascript
复制
System.currentTimeMillis()

2.new Date().getTime()

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

代码语言:javascript
复制
public Date() { 
   
    this(System.currentTimeMillis());
}

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

3.Calendar.getInstance().getTimeInMillis()

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

附测试如下:

代码语言:javascript
复制
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();  
        }  
          
    }  
  
}  

效果如下

代码语言:javascript
复制
187  
7032  
297

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月3,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java中获取时间戳 三种方式对比
  • 1.System.currentTimeMillis()
    • 2.new Date().getTime()
      • 3.Calendar.getInstance().getTimeInMillis()
        • 附测试如下:
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档