UNIX 时间戳
UNIX 时间戳又称 POSIX 时间戳,是 UNIX 或类 UNIX 系统使用的时间表示方式:采用 UTC+00:00 1970 年 1 月 1 日 0 时 0 分 0 秒起至现在的总秒数,不考虑闰秒
以上是 UNIX 时间戳的定义,从定义中我们可以看出
- UNIX 时间戳采用的是 UTC(协调时间时),并且时区固定为 +00:00
- UNIX 时间戳精度为秒
- UNIX 时间戳的值不包含闰秒
java 中的时间戳
java 中的时间戳定义与 UNIX 时间戳的定义基本一致,唯一的区别是时间戳精确到了毫秒
获取13位(精确到毫秒)的时间戳
// 方法一 currentTimeMillis()由于是调用本地方法,速度最快,当只需要获取当前时间的时间戳时,推荐使用
long timestamp = System.currentTimeMillis();
// 方法二 使用的是旧的 java.util 包中的日历类,不推荐使用
long timestamp =Calendar.getInstance().getTimeInMillis();
// 方法三 使用的是旧的 java.util 包中的日期类,不推荐使用
long timestamp =new Date().getTime();
// 方法四 使用的是 java 8 中 java.time 包中的时间戳,推荐使用
long timestamp =Instant.now().toEpochMilli();
总结:只需要获取当前时间的时间戳,使用 System.currentTimeMillis(); ,其他时候使用 Instant 类的 toEpochMilli(); 方法,避免使用 java.util 包中的 时间相关类
mysql 中的时间戳
获取10位精确到秒的 UNIX 时间戳
SELECT unix_timestamp(now())