Java 我如何检查它是否在纽约时间下午2点到凌晨1点之间?

Java 我如何检查它是否在纽约时间下午2点到凌晨1点之间?,java,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:0

我需要检查纽约时区的时间是否在下午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);
Calendar calNewYork=Calendar.getInstance();
设置时区(TimeZone.getTimeZone(“美国/纽约”);
int curr\u hour=calNewYork.get(日历.hour\u OF\u DAY);
System.out.println(当前小时<1 |当前小时>=14);
日历calNewYork=Calendar.getInstance();
设置时区(TimeZone.getTimeZone(“美国/纽约”);
int curr\u hour=calNewYork.get(日历.hour\u OF\u DAY);
System.out.println(当前小时<1 |当前小时>=14);

如果您对当前时间是“下午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) {
    ...
}

如果您对当前时间是“下午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) {
    ...
}

你的意见是什么?你对现在的时间感兴趣吗?14:11有什么关系?@JonSkeet是的,我想知道纽约的当前时间。如果在这个范围内,我想执行一些task@code578841441那么,如果当前时间是下午3点,您想执行任务吗?您的输入是什么?你对现在的时间感兴趣吗?14:11有什么关系?@JonSkeet是的,我想知道纽约的当前时间。如果在这个范围内,我想执行一些task@code578841441因此,如果当前时间是下午3点,您想执行任务吗?时间是从凌晨2点到13:59:59.999pm。我相信OP希望从下午2点到00:59:59.999am。@JonSkeet不管怎样,Jon Skeet对我说:)不过我纠正了它,正如你指出的,这不包括边界时间。
curr\u hour
怎么能既小于1又大于14?(我个人认为结尾是排他性的,开头是包容性的……这是一种常见的做法。)@JonSkeet说得通,我从你的回答中复制了这个条件。使用
LocalTime
有什么好处?
LocalTime
更清楚地表明,您只关心一天中的时间。一般来说,新的时间API更好。我刚刚注意到我当前的回答中有一个错误,时间是从凌晨2点到下午13:59:59.999pm,
LocalTime
。我相信OP希望从下午2点到00:59:59.999am。@JonSkeet不管怎样,Jon Skeet对我说:)不过我纠正了它,正如你指出的,这不包括边界时间。
curr\u hour
怎么能既小于1又大于14?(我个人认为结尾是排他性的,开头是包容性的……这是一种常见的做法。)@JonSkeet说得通,我从你的回答中复制了这个条件。使用
LocalTime
有什么好处?
LocalTime
更清楚地表明,您只关心一天中的时间。一般来说,新的时间API更好。我刚刚注意到我当前回答中的
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) {
    ...
}