2013-08-20 6 views
6

Ich würde gerne wissen, ob es eine bestehende Enum gibt, die alle Wochentage in Java enthält. Ich benutze Calendar, um Zeitlogik zu behandeln, aber ich habe so etwas nicht gesehen (ich könnte es selbst erstellen, aber ich würde eher etwas Existierendes verwenden). Ich sah auch die threeten project, aber es ist immer noch in Alpha. Da ein Enum, das Wochentage enthält, so trivial ist, dass es in der enum-Dokumentation von der Sonne gezeigt wird, dachte ich, es könnte bereits etwas existieren. Irgendwelche Ideen ?Enum Tage in Java mit Kalender

+1

Wenn Sie nach einer vernünftigen API für Datum und Uhrzeit suchen, werfen Sie einen Blick auf http://www.joda.org/joda-time/ - wenn sie keine Enumeration für die Wochentage haben, obwohl. Warum brauchst du eins? –

+0

@PhilippReichart Ich möchte Tabellen in JSP mit einer Spalte für jeden Tag anzeigen. – fxm

+0

Also das ist über i18n? – atamanroman

Antwort

2

Im Kalender Klasse gibt es:

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Sunday. 
*/ 
public final static int SUNDAY = 1; 

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Monday. 
*/ 
public final static int MONDAY = 2; 

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Tuesday. 
*/ 
public final static int TUESDAY = 3; 

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Wednesday. 
*/ 
public final static int WEDNESDAY = 4; 

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Thursday. 
*/ 
public final static int THURSDAY = 5; 

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Friday. 
*/ 
public final static int FRIDAY = 6; 

/** 
* Value of the {@link #DAY_OF_WEEK} field indicating 
* Saturday. 
*/ 
public final static int SATURDAY = 7; 

(Quelle: java.util.Calendar)

Nicht eine Enumeration, weil es keine gab, als Kalender in JDK 1.1 eingeführt wurde.

+0

Ich bin mir bewusst, dass ich jeden Tag zugreifen kann. Was ich möchte, ist eine Liste, die alle Tage enthält, ohne sie selbst zu erstellen. Außerdem hätte ich gerne String-Werte, nicht int. – fxm

+0

@fxm, sollten Sie Enum selbst erstellen, wenn Sie es wollen, wird es nicht viel Zeit in Anspruch nehmen. Wie gesagt, "Kalender" -Klasse wurde eingeführt, bevor enums in Java kam – SpongeBobFan

+1

Ich denke, ich werde es tun, es ist nur eine seltsame etwas wie das nicht bereits existiert. – fxm

2

Die problematischen alten Datum-Zeit-Klassen wie java.util.Calendar sind jetzt veraltet, ersetzt durch java.time Klassen.

java.time.DayOfWeek Enum

Java enthält jetzt die java.time.DayOfWeek Enum.

Führen Sie die Objekte dieser Enumeration lieber als die ganzen Zahlen 1-7 durch, um Ihren Code selbstdokumentierender zu machen, die Typensicherheit zu gewährleisten und eine Reihe gültiger Werte sicherzustellen.

invoices.printReportForDayOfWeek(DayOfWeek.MONDAY); 

Nummerierung ist 1-7 für Montag bis Sonntag, nach ISO 8601 Standard.

Ermitteln Sie einen lokalisierten Namen des Tages, indem Sie getDisplayName aufrufen.

String output = DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL , Locale.CANADA_FRENCH) ; // Or Locale.US, etc. 

Um mehrere Tage in der Woche, verwenden Sie eine EnumSet (Implementierung von Set) oder EnumMap (Implementierung von Map) zu verfolgen.

Set<DayOfWeek> weekend = EnumSet.of(DayOfWeek.SATURDAY , DayOfWeek.SUNDAY) ; 
… 
Boolean todayIsWeekend = weekend.contains(LocalDate.now(ZoneId.of("America/Montreal")).getDayOfWeek()); 

Über java.time

Der java.time Rahmen in Java 8 gebaut und später. Diese Klassen ersetzen die alten problematischen Datum-Zeit-Klassen wie java.util.Date, .Calendar, & java.text.SimpleDateFormat.

Das Projekt Joda-Time, jetzt in maintenance mode, empfiehlt die Migration zu java.time.

Weitere Informationen finden Sie unter Oracle Tutorial. Und suchen Sie nach Stack Overflow für viele Beispiele und Erklärungen.

Ein Großteil der Funktionalität java.time zurück-portiert Java 6 & 7 in ThreeTen-Backport und auf Android in ThreeTenABP angepasst.

Das Projekt ThreeTen-Extra erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Erweiterungen von java.time. Sie können hier einige nützliche Klassen wie Interval, YearWeek, YearQuarter und mehr finden.