如何将 unix 时间戳的分钟数转换为 Java 中的日期和时间。例如,时间戳 "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
。
您可以使用 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 中的所有变体,根据您给定的特定 "日期 "所编写的模式生成不同的格式。http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Date
提供了一个 getTime()
方法,可返回自 EPOC 开始的毫秒数,因此您必须为 SimpleDateFormat
提供一个时区,以便根据您的时区正确格式化日期,否则它将使用 JVM 的默认时区(如果配置得当,该时区无论如何都是正确的)。Java 8 引入了 [Instant.ofEpochSecond
][1]实用程序方法,用于从 Unix 时间戳创建 [Instant
][2],然后将其转换为 [ZonedDateTime
][3],最后进行格式化,例如:
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 的用户有用。
[1]: https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#ofEpochSecond-long- "Instant.ofEpochSecond JavaDoc"; [2]: https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html "Instant JavaDoc"; [3]: https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html "ZonedDataTime JavaDoc";