【发布时间】:2011-02-01 23:31:58
【问题描述】:
我的服务器向我发送“美国/洛杉矶”格式的时区。在客户端上,我需要在该时区显示时间。答案将是“PST”或“PDT”,具体取决于给定时间的夏令时。我如何进行这种转换?
我使用的是 Java ME(准确地说是 Blackberry 4.7),所以我不能使用 Joda Time。
我需要对很多日期(但只有一个时区)快速进行此计算,所以我不能让服务器向我发送偏移量,因为偏移量可能会根据日期而变化。
编辑:让我重述问题,因为似乎有些混乱。我得到了一个 zoneinfo 名称和一个日期。我想知道该时区与 GMT 的偏移量。答案会因夏令时而异。
作为额外的奖励,我想让 TLA 向用户显示(即“PST”或“PDT”),但这是次要的。
解决方案:我将在这里总结解决方案,因为从下面的答案中并不太清楚。这基本上可以满足我在 J2ME 中的需要:
TimeZone zone = TimeZone.getTimeZone("America/Los_Angeles");
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(zone);
calendar.setTime(new Date(2011, 1, 1, 12, 0, 0));
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
calendar.setTime(new Date(2011, 6, 1, 12, 0, 0));
System.out.println(zone.getOffset(1, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.DAY_OF_WEEK), calendar.get(Calendar.MILLISECOND)));
【问题讨论】:
-
由于this answer,'Amrica/Los_angeles' 和 'PDT' 有相等的偏移量!
标签: java blackberry date java-me timezone