67

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

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

编辑:其实我希望它是根据美国时间 GMT-4,所以它会是2013-06-27 09:31:00.

4

3 回答 3

164

您可以使用 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);

如果采用的模式SimpleDateFormat非常灵活,您可以在 javadocs 中检查所有可用于根据给定特定Date. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • 因为 aDate提供了一个getTime()返回自 EPOC 以来的毫秒数的方法,所以需要您给SimpleDateFormat一个时区以根据您的时区正确格式化日期,否则它将使用 JVM 的默认时区(如果配置良好,无论如何都是正确的)
于 2013-07-02T18:22:01.087 回答
39

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

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 的人有用。

于 2014-12-05T15:52:40.433 回答
12

您需要通过将时间戳乘以 1000 将其转换为毫秒:

java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);
于 2013-07-02T18:12:55.170 回答