用java将unix时间戳转换为日期
如何将Unix时间戳中的分钟转换为java中的日期和时间?例如,时间戳用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);
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
方法,该方法返回自EPOC以来的毫秒数,因此需要您为getTime()
指定一个时区,以便根据您的时区正确格式化日期,否则它将使用JVM的默认时区(如果配置良好,无论如何都是正确的)SimpleDateFormat
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
更适合于。此外,我建议您将示例代码分成几部分,分别介绍每个步骤和每个想法。