Sono un po 'alle prese con questo.Java: come ottengo la data del x giorno in un mese (ad es. Il terzo lunedì di febbraio 2012)
voglio impostare il mio calendario per diciamo: terzo Lunedi nel mese di febbraio 2012. E non ho trovato alcun modo per farlo utilizzando Java.
Per esempio, se volevo impostare il mio calendario per il Natale 2011, posso farlo facilmente, in questo modo:
Calendar when = Calendar.getInstance();
when.set (Calendar.MONTH, Calendar.DECEMBER);
when.set (Calendar.DAY_OF_MONTH, 25)
when.set (Calendar.YEAR, 2011);
Ma io sono perso su come configurarlo per diciamo Memorial Day 2012, che è l'ultimo lunedì di maggio. Questo è il mio codice, ma è ovviamente sbagliato, perché semplicemente non può supporre che l'ultimo Lunedi di maggio sarà nella quarta settimana di maggio di quell'anno:
Calendar when = Calendar.getInstance();
when.set (Calendar.DAY_OF_WEEK,Calendar.MONDAY);
when.set (Calendar.MONTH, Calendar.MAY);
when.set (Calendar.WEEK_OF_MONTH, 4)
when.set (Calendar.YEAR, 2012);
Qualche suggerimento su come posso programatically trovare fuori, in quale settimana del mese di maggio 2012 (nell'esempio sopra) è l'ultimo lunedì? Supponendo che io possa ottenere quell'informazione, dovrei essere in grado di ottenere il mio codice sopra per funzionare.
Ho bisogno di qualcosa che funzioni fondamentalmente per altri esempi. Qualcosa che potrebbe dare un giorno esatto per gli stessi scenari. Esempi:
quale data è:
- Giovedi 3 di maggio 2015
- 1 ° Lunedi del giugno 2050
- quarto Martedì di Dicembre 2012
- 2 ° Mercoledì del luglio 2000
Ho davvero bisogno di questo per il mio progetto e sono sicuro che sia semplice, ma mi sto rompendo la testa senza risultati concreti da mostrare :) E inoltre non ho trovato nulla in rete.
Aggiunto:
Ok, questo è dove ho per l'ultimo Lunedi in un mese:
when.set (GregorianCalendar.MONTH, GregorianCalendar.MAY);
when.set (GregorianCalendar.DAY_OF_WEEK, Calendar.MONDAY);
when.set (GregorianCalendar.DAY_OF_WEEK_IN_MONTH, -1);
when.set (Calendar.YEAR, 2012);
Ma io non sono sicuro di come dovrei andare a fare ad esempio secondi lunedì dello stesso mese, come questo?
when.set (GregorianCalendar.DAY_OF_WEEK_IN_MONTH, 2);
Qualche suggerimento?
Mi piace molto questo codice, funziona davvero. Solo non so come specificare l'ultimo mercoledì (in questo caso) nel mese. Puoi aiutare. – jjj
Sto provando qualcosa come: LocalDate d = getNDayOfMonth (DateTimeConstants.WEDNESDAY, -1, 10, 2011); Ma non funziona. – jjj
@jjj: Per ottenere l'ultimo mercoledì del mese richiede un leggero cambiamento, ho aggiunto un metodo per questo. Puoi anche utilizzare il primo metodo: ad esempio, per ottenere l'ultimo mercoledì dell'otto 2001, ottenere il primo mercoledì di novembre 2011 e sottrarre una settimana. – leonbloy