2011-03-28 130 views
0

我想在明天的特定时间(而不是设备所处的时区)获取具有特定时间的日历对象。在下面的例子中,我希望明天在中部时区的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); 

回答

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的标签,所以日历可能是你唯一的选择。

对于第二个问题。 java.util.Calendar将Daylight处理为标准时间转换。

+0

乔达时间不会在Android上运行。 – 2014-06-10 18:40:50

0

在乔达时间...

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