最推荐使用Instant.now().toEpochMilli()获取时间戳,1. System.currentTimeMillis()高效简单;2. Date().getTime()已过时;3. Instant支持纳秒且线程安全;4. LocalDateTime需结合时区转换。
在 Java 中获取当前时间戳有多种方式,适用于不同的场景和需求。以下是几种常用的方法,涵盖从传统到现代的时间处理方式。
示例代码:
long timestamp = System.currentTimeMillis();
System.out.println("当前时间戳(毫秒): " + timestamp);
这种方式效率高,适合大多数需要时间戳的场景,比如日志记录、性能监控等。
示例代码:
import java.util.Date;
Date date = new Date();
long timestamp = date.getTime();
System.out.println("当前时间戳(毫秒): " + timestamp);
虽然功能正常,但 Date 类已被认为是过时的,建议优先使用更现代的 API。
示例代码:
import java.time.Instant; Instant now = Instant.now(); long timestamp = now.toE推荐在新项目中使用 Instant,它线程安全且 API 更清晰。pochMilli(); // 毫秒 long secondTimestamp = now.getEpochSecond(); // 秒 System.out.println("毫秒时间戳: " + timestamp); System.out.println("秒级时间戳: " + secondTimestamp);
示例代码:
import java.time.LocalDateTime;
import java.time.ZoneOffset;
LocalDateTime now = LocalDateTime.now();
long timestamp = now.toEpochSecond(ZoneOffset.UTC);
System.out.println("秒级时间戳: " + timestamp);
注意:toEpochSecond 需要指定时区偏移,否则无法转换。