获取特定时区的特定时间

时间:2011-03-28 20:36:43

标签: java android

我正在尝试明天在特定时区(而不是设备所在的时区)获取具有特定时间的日历对象。在下面的示例中,我想明天12点15分在中央时区,无论设备位于世界的哪个位置。

第一个问题,这是最好的方法吗?

第二个问题,我应该如何处理夏令时问题。我只处理4个美国大陆时区,我可以假设我想调整夏令时。

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.getDefault());
calendar.add(Calendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.add(Calendar.HOUR_OF_DAY, 6); //Central time zone
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.MINUTE, 15);

2 个答案:

答案 0 :(得分:3)

Calendar calendar =
   Calendar.getInstance(
       TimeZone.getTimeZone("America/Chicago"),
       Locale.getDefault()
   );

calendar.set( Calendar.HOUR_OF_DAY, 0 );
calendar.set( Calendar.MINUTE, 15 );
calendar.set( Calendar.SECOND, 0 );
calendar.set( Calendar.MILLISECOND, 0 );

calendar.add( Calendar.DAY_OF_MONTH, 1 );

最好的方法是使用JodaTime,但我看到你已经放了android标签,所以Calendar可能是你唯一的选择。

第二个问题。 java.util.Calendar处理Daylight到标准时间转换。

答案 1 :(得分:0)

在Joda-Time ......

DateTimeZone timeZone = DateTimeZone.forID( "America/Chicago" );
DateTime tomorrowAfterMidnight = DateTime.now( timeZone ).plusDays(1).withTimeAtStartOfDay().plusMinutes(15);