tl; dr
Mit 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.
)
Di.
Sehen Sie diesen Code live auf IdeOne.com ( Locale.US
funktioniert aber nur dort).
java.time
Siehe meinen Beispielcode oben und die richtige Antwort für java.time von Przemek .
Ordinalzahl
Wenn nur die Ordnungszahl des Tages gewünscht wird, wie kann diese abgerufen werden?
Verwenden Sie für die Ordnungszahl DayOfWeek
stattdessen das Enum-Objekt, z DayOfWeek.TUESDAY
. Denken Sie daran, dass a DayOfWeek
ein intelligentes Objekt ist, nicht nur eine Zeichenfolge oder eine bloße Ganzzahl. Durch die Verwendung dieser Enum-Objekte wird Ihr Code selbstdokumentierender , stellt gültige Werte sicher und bietet Typensicherheit .
Aber wenn Sie darauf bestehen, fragen Sie DayOfWeek
nach einer Nummer . Sie erhalten 1-7 für Montag bis Sonntag gemäß der Norm ISO 8601 .
int ordinal = myLocalDate.getDayOfWeek().getValue() ;
Joda-Zeit
UPDATE: Das Joda-Time-Projekt befindet sich jetzt im Wartungsmodus. Das Team empfiehlt, auf die Klassen java.time zu migrieren. Das java.time-Framework ist in Java 8 integriert (sowie auf Java 6 und 7 zurückportiert und weiter an Android angepasst ).
Hier ist ein Beispielcode mit der Joda-Time- Bibliothek Version 2.4, wie in der akzeptierten Antwort von Bozho erwähnt . Joda-Time ist den mit Java gebündelten Klassen java.util.Date/.Calendar weit überlegen.
LocalDate
Joda-Time bietet die LocalDate
Klasse die nur ein Datum ohne Tageszeit oder Zeitzone darzustellen. Genau das, was diese Frage verlangt. Den alten, mit Java gebündelten Klassen java.util.Date/.Calendar fehlt dieses Konzept.
Analysieren
Analysieren Sie die Zeichenfolge in einen Datumswert.
String input = "23/2/2010";
DateTimeFormatter formatter = DateTimeFormat.forPattern( "d/M/yyyy" );
LocalDate localDate = formatter.parseLocalDate( input );
Extrakt
Extrahieren Sie aus dem Datumswert die Wochentagsnummer und den Namen.
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 );
Dump
Zur Konsole werfen.
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 );
Lauf
Beim Ausführen.
input: 23/2/2010
localDate: 2010-02-23
dayOfWeek: 2
output: Tue
outputQuébécois: mar.
Über java.time
Das java.time- Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Legacy - Datum-Zeit - Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Weitere Informationen finden Sie im Oracle-Lernprogramm . Suchen Sie im Stapelüberlauf nach vielen Beispielen und Erklärungen. Die Spezifikation ist JSR 310 .
Woher bekomme ich die java.time-Klassen?
Das ThreeTen-Extra- Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Ergänzungen von java.time. Sie können einige nützliche Klassen hier wie finden Interval
, YearWeek
, YearQuarter
, und mehr .