new Date().getTime() && System.currentTimeMills() 以及其他获取时间戳的区别
1、new Date().getTime() 也可以获取时间戳,但是会有性能上的损耗,原因如下:
public Date() {
this(System.currentTimeMillis());
}
这是 Date的无参构造,其实就是调用了System.currentTimeMills(),然后再传入自己的有参构造,从性能上考虑,如果只是获取时间戳,不考虑时区影响,直接调用System.currentTimeMills()更好一些。
2、System.currentTimeMills()为什么不能考虑时区?
public static native long currentTimeMillis()
从源码中我们可以看出,该方法是一个本地方法 (native 表示java调用非java代码的接口),其时间来源依赖为其做了时区的处理,因此获取时间戳,在不考虑时区的情况下,他是最优选择。
3、另外一种获取时间的方式----日历(calendar)
Calendar.getInstance().getTimeInMillis()
这种方式速度比较慢,原因是Calendar是区分时区的,因为要处理时区问题会耗费很多时间。