我需要检查纽约时区的时间是否在下午 2 点到凌晨 1 点之间,但我不确定如何选择时区或下一步做什么
String string1 = "14:00:00";
Date time1 = new SimpleDateFormat("HH:mm:ss").parse(string1);
Calendar calendar1 = Calendar.getInstance();
calendar1.setTime(time1);
String string2 = "01:00:00";
Date time2 = new SimpleDateFormat("HH:mm:ss").parse(string2);
Calendar calendar2 = Calendar.getInstance();
calendar2.setTime(time2);
calendar2.add(Calendar.DATE, 1);
最佳答案
如果您对当前时间是否“下午 2 点之后或等于下午 2 点之后,或者凌晨 1 点之前”感兴趣,那么根本不需要使用字符串解析。您可以使用:
TimeZone zone = TimeZone.getTimeZone("America/New_York");
Calendar calendar = new GregorianCalendar(zone);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour < 1 || hour >= 14) {
...
}
例如,假设您确实希望它匹配下午 3 点,但您不希望它匹配上午 8 点。根据你的标题,我认为这是“下午 2 点到凌晨 1 点之间”。
如果您使用的是 Java 8,我建议通过 ZonedDateTime
使用 LocalTime
:
private static final LocalTime EARLY_CUTOFF = LocalTime.of(1, 0);
private static final LocalTime LATE_CUTOFF = LocalTime.of(14, 0);
ZoneId zone = ZoneId.of("America/New_York");
LocalTime time = ZonedDateTime.now(zone).toLocalTime();
if (time.compareTo(EARLY_CUTOFF) < 0 && time.compareTo(LATE_CUTOFF) >= 0) {
...
}
关于java - 如何查看时间是否在纽约时间下午 2 点到凌晨 1 点之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344855/