将 Java 时间戳转换为不同时区
在 Java 中,默认情况下时间戳最初采用格林威治标准时间 (GMT)。然而,在处理来自不同时区的用户输入时,将时间戳转换为用户的特定时区是必要的。
考虑以下场景:东部标准时间 (EST) 的用户提供时间戳“5/1” /2008 下午 6:12(美国东部时间)”。 Web 服务需要 GMT 格式的时间戳,即“5/1/2008 6:12 PM (GMT)”。
要准确转换不同时区的时间戳,需要自定义转换器。以下是 ConvertToGmt() 的代码:
public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); // Milliseconds since epoch GMT long msFromEpochGmt = date.getTime(); // Current offset from GMT at current date int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a GMT calendar, set time, and add offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; }
此方法将输入日历转换为 GMT 日历,确保 Web 服务的 GMT 时间戳准确。请注意,此方法当前不处理夏令时更改。
以上是如何将Java时间戳转换为不同时区?的详细内容。更多信息请关注PHP中文网其他相关文章!