我有一个包含UNIX Epoch time的字符串,需要将其转换为Java Date对象。
String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
Date expiry = df.parse(date);
} catch (ParseException ex) {
ex.getStackTrace();
}
标记的行就是我遇到问题的地方。我不知道SimpleDateFormat()的参数应该是什么,或者我是否应该使用SimpleDateFormat()。
发布于 2009-02-11 00:57:32
不如这样吧:
Date expiry = new Date(Long.parseLong(date));
编辑:根据rde6173的回答并仔细查看问题中指定的输入,"1081157732“似乎是一个基于秒的纪元值,因此您需要将parseLong()中的long乘以1000以转换为毫秒,这是Java构造函数使用的,因此:
Date expiry = new Date(Long.parseLong(date) * 1000);
发布于 2015-12-24 05:43:09
java.time
使用Java8和更高版本中内置的java.time
框架。
import java.time.LocalDateTime;
import java.time.Instant;
import java.time.ZoneId;
long epoch = Long.parseLong("1081157732");
Instant instant = Instant.ofEpochSecond(epoch);
ZonedDateTime.ofInstant(instant, ZoneOffset.UTC); # ZonedDateTime = 2004-04-05T09:35:32Z[UTC]
在这种情况下,您最好使用ZonedDateTime
将其标记为UTC时区中的日期,因为在Unix time中,纪元是在Java中定义的。
ZoneOffset
包含一个用于协调世界时时区的方便的常量,如上面最后一行所示。它的超类ZoneId
可以用来调整到其他时区。
ZoneId zoneId = ZoneId.of( "America/Montreal" );
发布于 2009-02-11 00:56:24
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp * 1000)
https://stackoverflow.com/questions/535004
复制相似问题