如何在Unix中将分钟从unix时间戳转换为日期和时间。例如,时间戳1372339860
对应Thu, 27 Jun 2013 13:31:00 GMT
。
我想将1372339860
转换为2013-06-27 13:31:00 GMT
。
编辑:其实我希望它是根据美国时间GMT-4,所以它将是2013-06-27 09:31:00
。
答案 0 :(得分:140)
您可以使用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
Date
提供的getTime()
方法返回自EPOC以来的毫秒数,因此您需要向SimpleDateFormat
时区提供一个时区,以根据您的时区正确设置日期格式,否则它将使用JVM的默认时区(如果配置得当,则无论如何都是正确的)答案 1 :(得分:31)
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的人有用。
答案 2 :(得分:11)
您需要将时间戳乘以1000来将其转换为毫秒:
java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);