Zum Beispiel habe ich das Datum: "23/2/2010" (23. Februar 2010). Ich möchte es an eine Funktion übergeben, die den Wochentag zurückgibt . Wie kann ich das machen?
In diesem Beispiel sollte die Funktion String
"Di" zurückgeben.
Wenn nur die Ordnungszahl des Tages gewünscht wird, wie kann diese abgerufen werden?
Calendar
Klasse verwenden, z. B.Calendar.SUNDAY
oderCalendar.JANUARY
.Calendar
,Date
undDateTimeFormat
(und Joda Zeit zu) und verwenden Sie die Java 8java.time
Klassen, zum BeispielYearMonth
oderLocalDate
. Weitere Informationen finden Sie in dieser Antwort .java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 & Java 9. Siehe Tutorial von Oracle .Verwenden Sie diesen Code, um den Tagesnamen anhand eines Eingabedatums zu ermitteln. Einfach und gut getestet.
quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 & Java 9. Siehe Tutorial von Oracle .Verwenden Sie einfach SimpleDateFormat .
Das Ergebnis ist: Sa, 28. Dezember 2013
Der Defaultkonstruktor nimmt „die Voreinstellung“ Locale , so vorsichtig sein , es zu benutzen , wenn Sie ein bestimmtes Muster benötigen.
quelle
tl; dr
Mit java.time …
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
Verwenden Sie für die Ordnungszahl
DayOfWeek
stattdessen das Enum-Objekt, zDayOfWeek.TUESDAY
. Denken Sie daran, dass aDayOfWeek
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 .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.
Extrakt
Extrahieren Sie aus dem Datumswert die Wochentagsnummer und den Namen.
Dump
Zur Konsole werfen.
Lauf
Beim Ausführen.
Ü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 .quelle
java.time
Verwenden eines
java.time
in Java 8 und höher integrierten Frameworks.Die Aufzählung kann eine Zeichenfolge des Tagesnamens generieren, die automatisch in der menschlichen Sprache und den kulturellen Normen von a lokalisiert ist . Geben Sie a an, um anzugeben, dass Sie eine lange Form oder einen abgekürzten Namen wünschen.
DayOfWeek
Locale
TextStyle
quelle
Sie können den folgenden Code ausprobieren:
quelle
LocalDate
? Hast du diese vor dem Posten gelesen?quelle
Für Java 8 oder höher , LOCALDATE ist vorzuziehen ,
Hinweis: Wenn die Eingabe String / Benutzerdefiniert ist, sollten Sie sie in int analysieren .
quelle
quelle
Eine andere "lustige" Möglichkeit ist die Verwendung des Doomsday-Algorithmus . Es ist eine viel längere Methode, aber auch schneller, wenn Sie kein Kalenderobjekt mit einem bestimmten Datum erstellen müssen.
quelle
Kann das folgende Code-Snippet für Eingaben wie (Tag = "08", Monat = "05", Jahr = "2015" und Ausgabe wird "MITTWOCH") verwenden.
quelle
Einzeilige Antwort:
Anwendungsbeispiel:
quelle
quelle
quelle
Es gibt eine Herausforderung für das Datum und die Uhrzeit von Hackerrank Java
Ich persönlich bevorzuge die LocalDate-Klasse.
Es gibt ein Video zu dieser Herausforderung.
Java-Hackerrank-Lösung für Datum und Uhrzeit
Ich hoffe es wird helfen :)
quelle
Calendar
Klasse verwenden möchten , beachten Sie bitte, dass dieset
Methode im Kalender Monate ab 0 dauert0 for January
. Danke dir!Hinzufügen einer anderen Möglichkeit, genau das zu tun, was das OP verlangt, ohne die neuesten integrierten Methoden zu verwenden:
quelle
SimpleDateFormat
und verwendenDate
. Insbesondere sollten Sie die veraltetegetDay
Methode nicht verwenden , sie ist nicht zuverlässig. Und Sie sollten nicht verwendenif
-else
für die Auswahl von 7 Werten, die wir habenswitch
, oder Sie können ein Array verwenden. Alles in allem ist Ihr Code sowohl länger als auch komplizierter als nötig.quelle
Programm zum Ermitteln des Wochentags durch Angabe des Benutzereingabedatums Monat und Jahr mit dem
java.util.scanner
Paket:quelle
java.util.Date
,java.util.Calendar
undjava.text.SimpleDateFormat
sind jetzt Erbe , durch die verdrängte java.time Klassen in Java gebaut 8 & Java 9. Siehe Tutorial von Oracle .if ((ym%4==0) && (gm==2)){ d=(gd+m[gm-1]+ym+yp+y[a]-1)%7;
Erhalten Sie den Tageswert, indem Sie den aktuellen Zeitstempel angeben.
quelle
quelle
Die folgende Methode ruft sieben Tage ab und gibt den Kurznamen der Tage im List Array in Kotlin zurück. Sie können ihn jedoch einfach im Java-Format neu formatieren und nur die Idee präsentieren, wie der Kalender den Kurznamen zurückgeben kann
Ergebnisse wie
quelle
Calendar
Klasse 2019 verwenden sollten. Sie ist schlecht gestaltet und längst veraltet. Stattdessen empfehle ichLocalDate
undDayOfWeek
von java.time die moderne Java-API für Datum und Uhrzeit .Sie können die folgende Methode verwenden, um den Wochentag zu erhalten, indem Sie ein bestimmtes Datum übergeben.
Hier für die festgelegte Methode der Kalenderklasse ist der schwierige Teil der Index für den Monatsparameter, der bei 0 beginnt .
quelle
Die Kalenderklasse verfügt über eine integrierte displayName-Funktionalität:
Verfügbar seit Java 1.6. Siehe auch Oracle-Dokumentation
quelle
Das funktioniert richtig ...
Es bietet die integrierte Methode getDayOfWeek (), um den Tag einer bestimmten Woche abzurufen:
Um den Wert von enum
l.getDayOfWeek()
einer Zeichenfolge zuzuweisen , können Sie wahrscheinlich die aufgerufene Methode von Enum verwendenname()
, die den Wert von enum object zurückgibt.quelle
listHolidays.add(LocalDate.of(year, 1, 1));
der Antwort ein hinzugefügt . Wenn Sie die Antwort verbessern möchten, sollten Sie Ihre eigene hinzufügen. Hoffe das hilftIm Folgenden finden Sie zwei Snippet-Zeilen, die die Java 1.8-Zeit-API für Ihre Anforderungen verwenden.
quelle