用java将unix时间戳转换为日期

用java将unix时间戳转换为日期,java,unix-timestamp,Java,Unix Timestamp,如何将Unix时间戳中的分钟转换为java中的日期和时间?例如,时间戳1372339860对应于Thu,2013年6月27日13:31:00 GMT 我想将1372339860转换为2013-06-27 13:31:00 GMT 编辑:实际上我希望它是根据美国时间GMT-4,因此它将是2013-06-27 09:31:00您需要将时间戳乘以1000将其转换为毫秒: java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);

如何将Unix时间戳中的分钟转换为java中的日期和时间?例如,时间戳
1372339860
对应于
Thu,2013年6月27日13:31:00 GMT

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


编辑:实际上我希望它是根据美国时间GMT-4,因此它将是
2013-06-27 09:31:00

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

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

您可以使用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
    提供了一个
    getTime()
    方法,该方法返回自EPOC以来的毫秒数,因此需要您为
    SimpleDateFormat
    指定一个时区,以便根据您的时区正确格式化日期,否则它将使用JVM的默认时区(如果配置良好,无论如何都是正确的)
Java 8引入了一种实用方法,用于从Unix时间戳创建,然后可以将其转换为并最终格式化,例如:

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的人可能有用。

DateTime which=new DateTime(yourunixtimestampaslong*1000L,DateTimeZone.UTC)如果您使用。或者
DateTime where=newdatetime(您的unixtimestampaslong*1000L,DateTimeZone.forOffsetHours(-4))用于第二个示例。Javadoc SimpleDateFormat=新的SimpleDateFormat(“dd-MM-yyy-HH:MM:ss”)
private String getDateString(long-timein毫秒){SimpleDateFormat formatter=new-SimpleDateFormat(“EEE,d-MMM-yyyy”at'HH:mm:ss z”);return formatter.format(timein毫秒);}
请注意,问题是将历元分钟数转换为日期,然后将其格式化为时区偏移已修改的模式,谢谢@fvuth这个答案更好,因为作者还举了一个如何尊重时区的例子。太好了!顺便说一句,要获取设备的当前时区,我们可以使用
TimeZone.getDefault()
如果未指定,则使用默认时区anyways@Nicolas我刚刚为所使用的类别添加了包名称空间。java.time的大部分功能在中向后移植到java 6和7,并进一步适应于中(请参阅)。您的UTC偏移示例(
GMT-4
)比
ZoneDateTime
更适合于。此外,我建议您将示例代码分成几部分,分别介绍每个步骤和每个想法。