在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时间戳创buildInstant
的Instant.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);