Java: immer den aktuellen Tag der Woche Wert
Im moment, bin ich das erstellen eines java-Zeitplan-app, und ich Frage mich, wie man auf den aktuellen Tag der Woche während der Verwendung der Kalender-Klasse, um den ersten Tag der Woche.
Hier ist die Methode, die ich verwende in einer Klasse um eine Woche planen
public static String getSunday() {
SimpleDateFormat d = new SimpleDateFormat(dayDate);
Calendar specific = cal;
specific.add(Calendar.DAY_OF_YEAR, (cal.getFirstDayOfWeek() - ??));
return d.format(specific.getTime());
}
- Es ist nicht ganz klar, was du versuchst hier zu tun. Ist Ihre Methode mit dem Namen 'get Sonntag'. Es gibt einen formatierten Datum-String für einen Kalender enthält, eine unbestimmte Starttermin nach vorne verschoben eine Anzahl von Tagen berechnet, durch Abzug der etwas von dem ersten Tag der Woche. Was ist der Starttermin? Was versuchen Sie, zurückzukehren?
- cal wird erstellt unter der Kalender-Klasse, ruft die Instanz. Es initialisiert wird unter der Konstruktor und was ich versuchte zu tun war, align Tage Termine "3/11" unter dem entsprechenden Tag "do".
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie den aktuellen Tag der Woche durch den Aufruf
get()
mitCalendar.DAY_OF_WEEK
Auch, während ich ' m nicht sicher, ich verstehe genau, was Sie zu tun versuchen ist, sieht es fischig zu mir. (Was ist
cal
zum Beispiel?)java.util.Date
,java.util.Calendar
, undjava.text.SimpleTextFormat
sind jetzt legacy, überlagert von der java.Zeit Klassen. Siehe Tutorial von Oracle.tl;dr
Details
Die Frage und die anderen Beantworten Sie beide überlebten Klassen.
Dem alten Datum-Zeit-Klassen sind schlecht konzipiert, verwirrend und lästig. Um Sie zu vermeiden.
java.Zeit
In Java 8 und höher, verwenden wir die integrierte java.Zeit Rahmen. Ein Großteil der Funktionalität ist zurück-portiert auf Java 6 & 7 (ThreeTen-Backport) und weiter angepasst werden, um Android (ThreeTenABP).
Einer
Instant
stellt den aktuellen Zeitpunkt im UTC-Format mit einer Auflösung von bis zu Nanosekunden.Zu Holen Sie sich die Tag-der-Woche müssen wir bestimmen das Datum. Zeitzone ist entscheidend, das Datum als Datum kann variieren rund um den Globus für einen bestimmten moment. Zum Beispiel, ein paar Minuten nach der Mitternacht in Paris ist ein neuer Tag, während in Montréal ist es immer noch "gestern".
Verwenden
amp; zoneid
zur Darstellung einer Zeitzone. Fragen Sie nach einem die richtige Zeit zone name im formatcontinent/region
. Verwenden Sie niemals die 3-4 Buchstaben-Abkürzungen, die Häufig in den mainstream-Medien, wie Sie sind, nicht wahr, Zeitzonen, nicht standardisiert, und sind auch nicht einzigartig(!).Praktisch
DayOfWeek
enum bestimmen den Tag der Woche.Können Sie befragen die
DayOfWeek
Objekt.Können Sie bitten Sie um eine Zahl von 1 bis 7, wobei 1 Montag und 7 Sonntag pro die ISO 8601 standard. Aber nicht übergeben Sie diese Nummer, um Ihren code; stattdessen passieren um
DayOfWeek
Objekte genießen Sie die Vorteile der Typsicherheit garantiert gültige Werte.Möchten Sie möglicherweise text, den Namen des Tages der Woche. Lassen Sie java.Zeit automatisch übersetzt den Namen in einer menschlichen Sprache. Ein
Locale
Spezies, die der menschlichen Sprache, und gibt auch an, die kulturellen Normen zu verwenden, wie Sie abzukürzen und zu nutzen. DieTextStyle
enum zeigt an, wie lange ein name, den Sie möchten.Bekommen, die Anfang der Woche an, Fragen Sie nach den vorherigen Montag (oder Sonntag, was auch immer), oder stick mit heute, wenn es ist ein Montag. Verwenden Sie eine
TemporalAdjuster
Implementierung inTemporalAdjusters
Klasse.Wenn Sie ein Datum-Uhrzeit statt Datum-nur, Fragen Sie java.Zeit, um den ersten moment des Tages (nicht immer die Zeit
00:00:00
).Über java.Zeit
Den java.Zeit framework ist in Java 8 und höher. Diese Klassen verdrängen die lästige alte legacy Datum-Zeit-Klassen wie
java.util.Date
,Calendar
, &" = SimpleDateFormat
.Den Joda-Time Projekt, jetzt in Wartung-Modus, rät der migration auf die java.Zeit Klassen.
Um mehr zu erfahren, siehe die Oracle Tutorial. Und die Suche Stack Overflow für viele Beispiele und Erklärungen. Spezifikation JSR 310.
Wo erhalten Sie die java.Zeit-Klassen?
Den ThreeTen-Extra Projekt erweitert die java.mal mit zusätzlicher Klassen. Dieses Projekt ist ein Testgelände für mögliche künftige Erweiterungen zu java.Zeit. Sie finden möglicherweise einige nützliche Klassen, die hier wie
Interval
,YearWeek
,YearQuarter
, und mehr.