Java:Unix时间戳
在Java中可以使用java.time包中的类来将Unix时间戳通常是以秒或毫秒为单位的时间点自1970年1月1日UTC以来的毫秒数转换为具体的日期和时间。以下是如何做到这一点的示例使用Instant和ZonedDateTime如果使用的是Java 8或更高版本可以使用java.time包中的类。示例将Unix时间戳毫秒转换为LocalDateTimeimport java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;public class UnixTimestampToDateTime {public static void main(String[] args) {// Unix时间戳毫秒long unixTimestamp 1609459200000L; // 例如2021-01-01 00:00:00 UTC// 将Unix时间戳转换为InstantInstant instant Instant.ofEpochMilli(unixTimestamp);// 转换为LocalDateTime这里使用UTC时区作为示例LocalDateTime dateTime instant.atZone(ZoneId.systemDefault()).toLocalDateTime();// 输出结果System.out.println(LocalDateTime: dateTime);}}如果想要特定的时区比如中国标准时间CST可以使用ZoneId.of(Asia/Shanghai)代替ZoneId.systemDefault()。示例将Unix时间戳秒转换为LocalDateTime如果有以秒为单位的Unix时间戳可以这样转换import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;public class UnixTimestampToDateTime {public static void main(String[] args) {// Unix时间戳秒long unixTimestampSeconds 1609459200L; // 例如2021-01-01 00:00:00 UTC// 将Unix时间戳秒转换为InstantInstant instant Instant.ofEpochSecond(unixTimestampSeconds);// 转换为LocalDateTime这里使用UTC时区作为示例LocalDateTime dateTime instant.atZone(ZoneId.systemDefault()).toLocalDateTime();// 输出结果System.out.println(LocalDateTime: dateTime);}}使用java.util.Date和SimpleDateFormat旧方法但仍然有效如果使用的是Java 7或更早的版本可以使用java.util.Date和SimpleDateFormat类。import java.text.SimpleDateFormat;import java.util.Date;import java.util.TimeZone;public class UnixTimestampToDateTime {public static void main(String[] args) {// Unix时间戳毫秒long unixTimestamp 1609459200000L; // 例如2021-01-01 00:00:00 UTCDate date new Date(unixTimestamp); // 注意这里直接传入毫秒即可因为new Date()接受的参数就是毫秒值。SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss); // 设置日期时间格式sdf.setTimeZone(TimeZone.getTimeZone(UTC)); // 设置时区为UTC或者使用其他需要的时区例如Asia/ShanghaiString formattedDate sdf.format(date); // 格式化日期时间字符串System.out.println(Formatted Date: formattedDate); // 输出结果}}对于以秒为单位的Unix时间戳可以先将其转换为毫秒乘以1000然后再创建Date对象。例如Date date new Date(unixTimestampSeconds * 1000);。