Java关于时间戳的详细介绍
一、时间戳的特点
- 唯一性:对于每个特定的时间点,时间戳都是唯一的。
- 数值表示:以长整型(long)数值的形式存在,方便进行数学运算和比较。
- 跨平台性:在不同的操作系统和 Java 运行环境中,时间戳的计算方式是一致的,具有良好的跨平台性。
二、时间戳的用途
- 时间记录:可以准确地记录事件发生的时间,例如在日志记录中,使用时间戳可以方便地确定事件的顺序和时间间隔。
- 时间比较:通过比较两个时间戳的大小,可以确定事件发生的先后顺序。
- 定时器和延迟操作:在 Java 中,可以使用时间戳来实现定时器和延迟操作,例如在一定时间后执行某个任务。
- 数据库存储:时间戳可以作为数据库中的时间字段存储,方便进行时间相关的查询和排序。
三、获取时间戳的方法
在 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是区分时区的,因为要处理时区就会消耗很多的时间,所以速度是最慢的
欢迎大家测试,进行实战引用。