equivalente Calendar.DAY_OF_WEEK_IN_MONTH en ZonedDateTime en java8

Laxmi Kadariya:

Estoy tratando de comprobar Acción de Gracias (cuarto jueves de noviembre).
Tengo ZonedDateTimecomo2019-11-23T08:43:14.699-07:00[America/Los_Angeles]

¿Cómo puedo comprobar si is4th jueves o no el uso de Java 8 ZonedDateTimeapi

En el calendario que tenemos Calendar.DAY_OF_WEEK_IN_MONTHque calcular el número de semanas en un mes. ¿Hay alguna cosa en ZonedDateTime?

Tengo esta usando el calendario.

// check Thanksgiving (4th Thursday of November)
    if (cal.get(Calendar.MONTH) == Calendar.NOVEMBER
        && cal.get(Calendar.DAY_OF_WEEK_IN_MONTH) == 4
        && cal.get(Calendar.DAY_OF_WEEK) == Calendar.THURSDAY) {
        return false;
    }

¿Cómo puedo lograr esto usando ZonedDateTime?

VV Ole:

Lo que necesita es la semana alineado del mes. La primera semana del mes alineado es del 1 a la 7 del mes, por lo que contiene el primer jueves de cada mes, no importa en qué día de la semana comienza el mes. La segunda semana es alineado 8 a 14 del mes, etc.

    ZonedDateTime zdt = ZonedDateTime.parse("2019-11-23T08:43:14.699-07:00[America/Los_Angeles]");
    if (zdt.getMonth().equals(Month.NOVEMBER)
            && zdt.get(ChronoField.ALIGNED_WEEK_OF_MONTH) == 4
            && zdt.getDayOfWeek().equals(DayOfWeek.THURSDAY)) {
        System.out.println("" + zdt + " is on Thanksgiving");
    }

Desde Acción de Gracias es el 28 de noviembre de este año, el fragmento anterior prueba de noviembre de 23 de no imprime nada. Tratar con el día correcto en su lugar:

    ZonedDateTime zdt = ZonedDateTime.parse("2019-11-28T17:34:56.789-07:00[America/Los_Angeles]");

2019-11-28T16: 34: 56,789 a 08: 00 [America / Los_Angeles] es en Acción de Gracias

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=228419&siteId=1
Recomendado
Clasificación