我正在尝试明天在特定时区(而不是设备所在的时区)获取具有特定时间的日历对象。在下面的示例中,我想明天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);
答案 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);