Unix时间戳和Java 的 System.currentTimeMillis()的区别
时间: 2023-10-25 17:36:23 浏览: 137
Unix时间戳是指从1970年1月1日00:00:00 UTC起至现在的秒数。它是一个整数,通常以10位数字表示。
而Java的System.currentTimeMillis()方法返回的是从1970年1月1日00:00:00 UTC起至现在的毫秒数。它也是一个整数,通常以13位数字表示。
因此,二者的区别在于时间的精度不同,Unix时间戳精确到秒,而Java的System.currentTimeMillis()方法精确到毫秒。
相关问题
java System.currentTimeMillis()与new Date().getTiem()的值是一样的吗
在 Java 中,`System.currentTimeMillis()` 和 `new Date().getTime()` 的值是**一样的**,因为它们都返回自 **1970年1月1日 00:00:00 UTC(称为 Unix 时间起点)以来的毫秒数**。
---
### ✅ 示例代码
```java
import java.util.Date;
public class TimeComparison {
public static void main(String[] args) {
long time1 = System.currentTimeMillis();
long time2 = new Date().getTime();
System.out.println("System.currentTimeMillis(): " + time1);
System.out.println("new Date().getTime(): " + time2);
// 比较两个时间值是否相同
if (time1 == time2) {
System.out.println("两者的时间值相同");
} else {
System.out.println("两者的时间值不同");
}
}
}
```
---
### 🔍 解释:
- `System.currentTimeMillis()`:
- 这是一个静态方法。
- 它直接返回当前时间与 1970 年 1 月 1 日之间的毫秒差(long 类型)。
- 高效、推荐用于获取当前时间戳。
- `new Date().getTime()`:
- 创建了一个 `Date` 对象,默认表示当前时间。
- 调用 `getTime()` 方法获取该时间点对应的毫秒数。
- 实际上内部也是调用了 `System.currentTimeMillis()`。
因此,无论你使用哪一个,最终获取到的数值在同一个时间点上是相同的。
---
### ⚠️ 注意事项:
虽然两者的值相同,但如果你创建多个 `Date` 实例或多次调用 `System.currentTimeMillis()`,由于程序执行需要时间,它们之间可能会有几毫秒的差异。
例如:
```java
long t1 = System.currentTimeMillis();
// 假设这里有一些延迟操作
Thread.sleep(100);
long t2 = new Date().getTime();
// t1 和 t2 可能相差大约100毫秒
```
---
### ✅ 推荐使用:
在只需要获取时间戳时,推荐使用 `System.currentTimeMillis()`,因为它不需要创建对象,性能更好。
---
###
System.currentTimeMillis() 获取时间戳的后6位
这个说法是不准确的。System.currentTimeMillis() 方法返回的是自1970年1月1日格林威治标准时间(也称为Unix时间戳)至今的毫秒数,是一个长整型数值,通常有13位数。如果想要获取时间戳的后6位,可以将返回值转换成字符串,并取字符串的后6位数字部分,如下所示:
```java
long timestamp = System.currentTimeMillis();
String strTimestamp = String.valueOf(timestamp);
String lastSixDigits = strTimestamp.substring(strTimestamp.length() - 6);
```
需要注意的是,如果当前时间戳不足6位数,那么取出来的字符串会少于6位,需要根据实际情况进行补零或其他处理。
阅读全文
相关推荐















