Bootstrap

java时间戳

Java关于时间戳的详细介绍

一、时间戳的特点

  1. 唯一性:对于每个特定的时间点,时间戳都是唯一的。
  2. 数值表示:以长整型(long)数值的形式存在,方便进行数学运算和比较。
  3. 跨平台性:在不同的操作系统和 Java 运行环境中,时间戳的计算方式是一致的,具有良好的跨平台性。

二、时间戳的用途

  1. 时间记录:可以准确地记录事件发生的时间,例如在日志记录中,使用时间戳可以方便地确定事件的顺序和时间间隔。
  2. 时间比较:通过比较两个时间戳的大小,可以确定事件发生的先后顺序。
  3. 定时器和延迟操作:在 Java 中,可以使用时间戳来实现定时器和延迟操作,例如在一定时间后执行某个任务。
  4. 数据库存储:时间戳可以作为数据库中的时间字段存储,方便进行时间相关的查询和排序。

三、获取时间戳的方法

在 Java 中,可以使用以下方法获取当前时间的时间戳:

long timestamp = System.currentTimeMillis();

System.currentTimeMillis()方法返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数。

此外,Java 8 引入了新的时间日期 API,也可以通过以下方式获取时间戳:

import java.time.Instant;

long timestamp = Instant.now().toEpochMilli();

这里的Instant.now()获取当前时间的Instant对象,然后通过toEpochMilli()方法转换为时间戳。

最近在项目中需要通过时间戳来检验系统的运行性能,前台加载的效率比以前缓慢了十来秒,所以需要用时间戳来看看到底是哪快代码的问题。

在这里总结了几个常用的写时间戳的代码供大家测试使用:

1.System.currentTimeMillis(),return Long;

这个方法用着好,运行时间最短,如果开发中遇到效率问题使用此种方式就可以

//获得系统的时间,单位为毫秒,转换为妙
        long totalMilliSeconds = System.currentTimeMillis();
        long totalSeconds = totalMilliSeconds / 1000;
         
        //求出现在的秒
        long currentSecond = totalSeconds % 60;
         
        //求出现在的分
        long totalMinutes = totalSeconds / 60;
        long currentMinute = totalMinutes % 60;
         
        //求出现在的小时
        long totalHour = totalMinutes / 60;
        long currentHour = totalHour % 24;
         
        //显示时间
        System.out.println("总毫秒为: " + totalMilliSeconds);
        System.out.println(currentHour + ":" + currentMinute + ":" + currentSecond + " GMT");

2.new Date().getTime()

这个使用量也是挺多的,但是效率并不是那么高,来看一下它源码:

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

可以看出,该无参构造 其实还是调用了System.currentTimeMillis(),所以单从性能的角度来看,如果只是获取时间戳的话,直接调用System.currentTimeMillis()就可以,如果不考虑时区的话

3.Calendar.getInstance().getTimeInMillis()

Calender是区分时区的,因为要处理时区就会消耗很多的时间,所以速度是最慢的

欢迎大家测试,进行实战引用。

;