在Java中转换unix时间戳到date

我怎样才能转换分钟从Unix时间戳到date和时间在Java中。 例如,时间戳1372339860对应于Thu, 27 Jun 2013 13:31:00 GMT

我想将1372339860转换为2013-06-27 13:31:00 GMT

编辑:其实我希望它是根据美国的时间格林尼治标准时间4,所以它会是2013-06-27 09:31:00

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

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

SimpleDateFormat采用的模式非常灵活,您可以在javadoc中检查所有可用于根据给定特定Date的模式生成不同格式的变体。 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • 由于Date提供了一个getTime()方法,该方法返回自EPOC以来的毫秒数,因此要求您给SimpleDateFormat一个时区,根据您的时区正确地格式化date,否则将使用JVM的默认时区(如果configuration将反正是对的)

Java 8引入了用于从Unix时间戳创buildInstantInstant.ofEpochSecond实用程序方法,然后可以将其转换为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的人有用。

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

 java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);