Tl;dr
Wie kann ich die Großschreibung der Namen kontrollieren?
Sie haben keine. In verschiedenen Sprachen und Kulturen gelten unterschiedliche Regeln für Großschreibung, Zeichensetzung, Abkürzungen usw.
getDisplayName
- automatisch lokalisieren
Month.from( LocalDate.now( ZoneId.of( "Pacific/Auckland" ) ) ) // Get current month.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) // Localize automatically. Specify `Locale` to determine human language and cultural norms for translation.
février
LocalDate.now( ZoneId.of( "Pacific/Auckland" ) ) // Get current date as seen by people in a certain region (time zone).
.getDayOfWeek() // Get the day-of-week as a pre-defined `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH )
lundi
Lokalisieren Sie
Wie bereits von anderen erwähnt, sollten Sie nicht Ihre eigenen parochialen (US-Englisch?) Vorstellungen von Großschreibung erzwingen. Verwenden Sie eine anständige Datum-Zeit-Bibliothek, und lassen Sie es automatisch für Sie lokalisieren.
java.time
Sie verwenden schreckliche alte Datum-Zeit-Klassen, die jetzt veraltet sind und von den java.time-Klassen verdrängt wurden.
Le site LocalDate
stellt einen reinen Datumswert ohne Uhrzeit und ohne Zeitzone dar.
Die Zeitzone ist für die Bestimmung eines Datums entscheidend. Zu jedem beliebigen Zeitpunkt variiert das Datum je nach Zeitzone rund um den Globus. Zum Beispiel, ein paar Minuten nach Mitternacht in Paris Frankreich ist ein neuer Tag und dennoch "gestern" in Montréal Québec .
Geben Sie eine Name der richtigen Zeitzone im Format von continent/region
, wie zum Beispiel America/Montreal
, Africa/Casablanca
o Pacific/Auckland
. Verwenden Sie niemals eine Abkürzung mit 3-4 Buchstaben wie z. B. EST
o IST
wie sie sind no echte Zeitzonen, nicht genormt und nicht einmal eindeutig(!).
ZoneId z = ZoneId.of( "Asia/Kolkata" );
LocalDate today = LocalDate.now( z );
Um mit einem Monat zu arbeiten, extrahieren Sie eine Month
enum-Objekt. Das Gleiche gilt für den Wochentag, DayOfWeek
.
Rufen Sie an. getDisplayName
. Pass a TextStyle
für die Abkürzung. Pass a Locale
um (a) die menschliche Sprache für die Übersetzung von Tagesnamen, Monatsnamen usw. und (b) die kulturellen Normen zu bestimmen, die über Fragen der Abkürzung, Großschreibung, Zeichensetzung, Trennzeichen usw. entscheiden. Beachten Sie, dass Locale
tiene nichts mit der Zeitzone zu tun.
Month m = today.getMonth() ;
String mNameQuébec = m.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
String mNameGermany = m.getDisplayName( TextStyle.FULL , Locale.GERMANY ) ;
und
DayOfWeek dow = today.getDayOfWeek() ;
String dowNameQuébec = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
String dowNameGermany = dow.getDisplayName( TextStyle.FULL , Locale.GERMANY ) ;
Über java.time
Le site java.time Framework ist in Java 8 und höher integriert. Diese Klassen verdrängen die lästigen alten Erbe Datum-Zeit-Klassen wie java.util.Date
, Calendar
, & SimpleDateFormat
.
Le site Joda-Time Projekt, jetzt in Wartungsmodus rät zur Migration auf den java.time Klassen.
Weitere Informationen finden Sie in der Oracle-Tutorial . Und suchen Sie auf Stack Overflow nach vielen Beispielen und Erklärungen. Spezifikation ist JSR 310 .
Mit einem JDBC-Treiber einhaltend JDBC 4.2 oder später, können Sie umtauschen java.time Objekte direkt mit Ihrer Datenbank. Sie brauchen keine Strings oder java.sql.*-Klassen.
Wo erhält man die java.time-Klassen?
- Java SE 8 , Java SE 9 und später
- Eingebaut.
- Teil der Standard-Java-API mit einer gebündelten Implementierung.
- Java 9 fügt einige kleinere Funktionen und Korrekturen hinzu.
- Java SE 6 y Java SE 7
- Ein Großteil der java.time-Funktionalität wurde in Java 6 und 7 zurückportiert in DreiZehn-Backport .
- Android
- Spätere Versionen von Android bündeln Implementierungen der java.time-Klassen.
- Bei früheren Android-Versionen ist die DreiZehnABP Projekt passt sich an DreiZehn-Backport (siehe oben). Siehe Wie benutzt man ThreeTenABP .
Le site DreiZehn-Extra Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt dient als Versuchsfeld für mögliche zukünftige Erweiterungen von java.time. Sie finden hier vielleicht einige nützliche Klassen wie Interval
, YearWeek
, YearQuarter
y mehr .