tl; dr
Utilizzando java.time ...
LocalDate.parse( // Generate `LocalDate` object from String input.
"23/2/2010" ,
DateTimeFormatter.ofPattern( "d/M/uuuu" )
)
.getDayOfWeek() // Get `DayOfWeek` enum object.
.getDisplayName( // Localize. Generate a String to represent this day-of-week.
TextStyle.SHORT_STANDALONE , // How long or abbreviated. Some languages have an alternate spelling for "standalone" use (not so in English).
Locale.US // Or Locale.CANADA_FRENCH and such. Specify a `Locale` to determine (1) human language for translation, and (2) cultural norms for abbreviation, punctuation, etc.
)
mar
Vedi questo codice eseguito dal vivo su IdeOne.com (ma Locale.US
funziona solo lì).
java.time
Vedi il mio codice di esempio sopra e vedi la risposta corretta per java.time di Przemek .
Numero ordinale
se si desidera solo il giorno ordinale, come può essere recuperato?
Per il numero ordinale, considera di passare intorno DayOfWeek
all'oggetto enum invece come DayOfWeek.TUESDAY
. Tieni presente che a DayOfWeek
è un oggetto intelligente, non solo una stringa o un semplice numero intero. L'uso di questi oggetti enum rende il tuo codice più autocontrollo, garantisce valori validi e garantisce la sicurezza dei tipi .
Ma se insisti, chiedi DayOfWeek
un numero . Ottieni 1-7 per lunedì-domenica secondo lo standard ISO 8601 .
int ordinal = myLocalDate.getDayOfWeek().getValue() ;
Joda-Time
AGGIORNAMENTO: il progetto Joda-Time è ora in modalità manutenzione. Il team consiglia di migrare alle classi java.time. Il framework java.time è integrato in Java 8 (così come il back-port su Java 6 e 7 e ulteriormente adattato ad Android ).
Ecco un codice di esempio che utilizza la libreria Joda-Time versione 2.4, come indicato nella risposta accettata da Bozho . Joda-Time è di gran lunga superiore alle classi java.util.Date/.Calendar in bundle con Java.
LocalDate
Joda-Time offre alla LocalDate
classe di rappresentare solo una data senza alcun orario o fuso orario. Proprio quello che richiede questa domanda. Le vecchie classi java.util.Date/.Calendar in bundle con Java non hanno questo concetto.
Parse
Analizza la stringa in un valore di data.
String input = "23/2/2010";
DateTimeFormatter formatter = DateTimeFormat.forPattern( "d/M/yyyy" );
LocalDate localDate = formatter.parseLocalDate( input );
Estratto
Estrai dal valore della data il numero e il nome del giorno della settimana.
int dayOfWeek = localDate.getDayOfWeek(); // Follows ISO 8601 standard, where Monday = 1, Sunday = 7.
Locale locale = Locale.US; // Locale specifies the human language to use in determining day-of-week name (Tuesday in English versus Mardi in French).
DateTimeFormatter formatterOutput = DateTimeFormat.forPattern( "E" ).withLocale( locale );
String output = formatterOutput.print( localDate ); // 'E' is code for abbreviation of day-of-week name. See Joda-Time doc.
String outputQuébécois = formatterOutput.withLocale( Locale.CANADA_FRENCH ).print( localDate );
cumulo di rifiuti
Scarica alla console.
System.out.println( "input: " + input );
System.out.println( "localDate: " + localDate ); // Defaults to ISO 8601 formatted strings.
System.out.println( "dayOfWeek: " + dayOfWeek );
System.out.println( "output: " + output );
System.out.println( "outputQuébécois: " + outputQuébécois );
Correre
Quando eseguito.
input: 23/2/2010
localDate: 2010-02-23
dayOfWeek: 2
output: Tue
outputQuébécois: mar.
Informazioni su java.time
Il framework java.time è integrato in Java 8 e versioni successive. Queste classi soppiantare la vecchia fastidiosi legacy classi data-time come java.util.Date
, Calendar
, e SimpleDateFormat
.
Il progetto Joda-Time , ora in modalità manutenzione , consiglia la migrazione alle classi java.time .
Per saperne di più, consulta il tutorial Oracle . E cerca Stack Overflow per molti esempi e spiegazioni. La specifica è JSR 310 .
Dove ottenere le classi java.time?
Il progetto ThreeTen-Extra estende java.time con classi aggiuntive. Questo progetto è un banco di prova per possibili aggiunte future a java.time. Si possono trovare alcune classi utili, come per esempio Interval
, YearWeek
,YearQuarter
e altro .