我的服务器向我发送格式为“America/Los Angeles”的时区。在客户端,我有一段时间需要在该时区显示。答案将是“PST”或“PDT”,具体取决于特定时间的夏令时。我如何进行转换?在Java ME中将“America/Los Angeles”时区转换为“PST”或“PDT”
我在Java ME(黑莓4.7,准确),所以我不能使用乔达时间。
我需要快速计算大量日期(但只有一个时区),所以我不能让服务器发送一个偏移量,因为偏移量可能会根据日期发生变化。
编辑:让我重申这个问题,因为似乎有一些混淆。我有一个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)));
由于[此回答](https://stackoverflow.com/a/31171284/659077),'Amrica/Los_angeles'和'PDT'有相等的抵消! – 2017-11-04 06:08:31