在java中将unix时间戳转换为日期

2022-08-31 14:26:27

如何在Java中将分钟从Unix时间戳转换为日期和时间?例如,时间戳对应于 。1372339860Thu, 27 Jun 2013 13:31:00 GMT

我想转换为 .13723398602013-06-27 13:31:00 GMT

编辑:实际上我希望它符合美国时间GMT-4,所以它将是.2013-06-27 09:31:00


答案 1

您可以使用SimlpeDateFormat来格式化您的日期,如下所示:

long unixSeconds = 1372339860;
// convert seconds to milliseconds
Date date = new java.util.Date(unixSeconds*1000L); 
// the format of your date
SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
// give a timezone reference for formatting (see comment at the bottom)
sdf.setTimeZone(java.util.TimeZone.getTimeZone("GMT-4")); 
String formattedDate = sdf.format(date);
System.out.println(formattedDate);

该模式采取如果非常灵活,您可以签入javadocs的所有变体,您可以使用这些变体来根据您编写的特定模式生成不同的格式。http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htmlSimpleDateFormatDate

  • 因为 a 提供了一个返回自 EPOC 以来的毫秒数的方法,所以需要您提供一个时区来根据你的时区正确格式化日期,否则它将使用 JVM 的默认时区(如果配置得当,无论如何都是正确的)DategetTime()SimpleDateFormat

答案 2

Java 8 引入了 Instant.ofEpochSecond 实用程序方法,用于从 Unix 时间戳创建 Instant,然后可以将其转换为 ZonedDateTime 并最终格式化,例如:

final DateTimeFormatter formatter = 
    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

final long unixTime = 1372339860;
final String formattedDtm = Instant.ofEpochSecond(unixTime)
        .atZone(ZoneId.of("GMT-4"))
        .format(formatter);

System.out.println(formattedDtm);   // => '2013-06-27 09:31:00'

我认为这可能对使用Java 8的人有用。


推荐