将unix时间戳转换为java中的日期

big*_*ata 60 java unix-timestamp

如何在Unix中将分钟从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.

Dav*_*ann 145

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

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

  • 因为a Date提供了一个getTime()返回自EPOC以来的毫秒数的方法,所以需要SimpleDateFormat根据时区给时区提供格式化日期,否则它将使用JVM的默认时区(如果配置得当,则无论如何都是正确的)

  • 这个答案更好,因为作者也举例说明了如何尊重时区. (2认同)
  • 优秀!顺便说一下,获取设备的当前时区我们可以使用`TimeZone.getDefault()` (2认同)
  • 未指定时,无论如何都会使用默认时区 (2认同)

Jon*_*han 33

Java 8引入了Instant.ofEpochSecond用于Instant从Unix时间戳创建的实用程序方法,然后可以将其转换为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'
Run Code Online (Sandbox Code Playgroud)

我认为这可能对使用Java 8的人有用.


and*_*ata 13

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

java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);
Run Code Online (Sandbox Code Playgroud)