如何使用 Java 处理日历时区
问题:
您有一个时间戳您的应用程序可能源自任何时区。但是,数据必须发送到假定数据始终为 GMT 的 WebService。您需要在用户不知情的情况下将用户的输入时间从本地时区转换为 GMT。
答案:
Java 的时区处理可能会令人困惑。虽然时间戳通常以 GMT 格式存储,但 Calendar 类默认使用系统当前的时区。要解决此挑战,请考虑以下事项:
import java.util.Calendar; import java.util.TimeZone; public class ConvertTimeZone { public static void main(String[] args) { // Example input time (EST) Calendar input = Calendar.getInstance(TimeZone.getTimeZone("EST")); input.set(2008, Calendar.MAY, 1, 18, 12, 0); // Create a Calendar in GMT Calendar gmt = convertToGmt(input); // Output the converted time (GMT) System.out.println(gmt.getTime()); // 2008-05-01 11:12:00 GMT } public static Calendar convertToGmt(Calendar cal) { Date date = cal.getTime(); TimeZone tz = cal.getTimeZone(); long msFromEpochGmt = date.getTime(); // Convert to milliseconds since epoch in GMT int offsetFromUTC = tz.getOffset(msFromEpochGmt); // Create a new Calendar in GMT and adjust for the offset Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); gmtCal.setTime(date); gmtCal.add(Calendar.MILLISECOND, offsetFromUTC); return gmtCal; } }
此代码执行以下步骤:
通过利用此方法,您可以准确地将用户的输入时间从任何时区转换为 GMT,确保与 WebService 的数据兼容性。
以上是如何在 Java 中将任何时区的时间戳转换为 GMT?的详细内容。更多信息请关注PHP中文网其他相关文章!