我有一个时间戳如下,来到我的服务器。
Date date = new Date();
long timestamp = date.getTime();
这是从不同的时区生成的,我只有上面的长值。我需要将这个时间转换为不同的时区。我尝试了以下方式,但仍显示当地时间。
// Convert to localdatetime using local time zone
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp),
ZoneId.systemDefault());
// Convert time to required time zone.
ZoneId est5EDT = ZoneId.of("EST5EDT");
ZonedDateTime est5EDTTime = ldt.atZone(est5EDT);
System.out.println("EST5EDT : " + est5EDTTime);
成功转换后,我需要获得该时间的时间戳。怎么做?
答案 0 :(得分:2)
您可以在打印时转换时区或时间戳的格式。如果您只想存储时间戳或比较它们,则无需执行任何操作。
答案 1 :(得分:0)
这也可以使用joda时间来完成,这是我的代码:
import java.text.SimpleDateFormat;
import org.joda.time.DateTimeZone;
public class TimeTest{
private static final String DATE_FORMAT = "dd MMM yyyy HH:mm:ss";
private Date dateToTimeZone(Date tempDate, String timeZoneVal) throws ParseException{
//timeZoneVal -> -8:00, 05:30, .....
String string = timeZoneVal;
String[] parts = string.split(":");
String part1 = parts[0];
String part2 = parts[1];
int hoursOffset = Integer.parseInt(part1);
int minutesOffset = Integer.parseInt(part2);
DateTimeZone timeZone = DateTimeZone.forOffsetHoursMinutes(hoursOffset, minutesOffset);
String gmtDate = tempDate.toGMTString();
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
dateFormat.setTimeZone(timeZone.toTimeZone());
return dateFormat.parse(gmtDate);
}
}
<强>输出:强>