java - 如何查看时间是否在纽约时间下午 2 点到凌晨 1 点之间?

标签 java

我需要检查纽约时区的时间是否在下午 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/

相关文章:

java - 在 JFrame 中创建一个键事件

java - Apache Tomcat 配置 : Access not authorized

java - 检测 Windows 10 上的 Java VM 架构

Java-Sqlite 截断所有数据库表

java - 从 forEach java 8 获取返回列表

java - 如何从图库中选择视频并裁剪/调整它的大小,就像在 android 中裁剪图像一样

java - 如何找到满足要求的最小操作集

JavaFX - 如何将键盘输入集中在 Hbox 与其他 Pane 中包含的一个 Pane 中

java - 为什么 GWT 不序列化异常的原因链?

java - 关闭 CloseableHttpResponse/CloseableHttpClient 的正确方法