wake-up-neo.net

Holen Sie sich den Wochentag von GregorianCalendar

Ich habe ein Datum und muss den Wochentag kennen, also habe ich ein GregorianCalendar-Objekt verwendet, aber ich erhalte einige falsche Daten zurück.

GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);

Was mache ich falsch?

Vielen Dank!

LÖSUNG BEARBEITEN:

mont--;
GregorianCalendar calendar = new GregorianCalendar(year, month, day);
int i = calendar.get(Calendar.DAY_OF_WEEK);

    if(i == 2){
        dayOfTheWeek = "Mon";           
    } else if (i==3){
        dayOfTheWeek = "Tue";
    } else if (i==4){
        dayOfTheWeek = "Wed";
    } else if (i==5){
        dayOfTheWeek = "Thu";
    } else if (i==6){
        dayOfTheWeek = "Fri";
    } else if (i==7){
        dayOfTheWeek = "Sat";
    } else if (i==1){
        dayOfTheWeek = "Sun";
    }
20
Marco Matarazzi
TimeZone timezone = TimeZone.getDefault();
Calendar calendar = new GregorianCalendar(timezone);
calendar.set(year, month, day, hour, minute, second);

String monthName=calendar.getDisplayName(Calendar.MONTH, Calendar.SHORT, Locale.getDefault());//Locale.US);
String dayName=calendar.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.getDefault());//Locale.US);
13
Benn Sandoval

Joda-Zeit

Ich verwende Joda-Time library für alle datums- und zeitbezogenen Operationen. Joda berücksichtigt Ihr Gebietsschema und erhält die entsprechenden Ergebnisse:

import org.joda.time.DateTime;
DateTime date = new DateTime(year, month, day, 0, 0, 0);

oder

DateTime date = DateTime().now();

Wochentag (int):

date.getDayOfWeek();

Wochentag (kurze Zeichenfolge) mit den Optionen toString() und DateTimeFormat :

date.toString("EE");
3
jki

tl; dr

myGregCal                  // `GregorianCalendar` is a legacy class, supplanted by the modern `Java.time.ZonedDateTime` class.
    .toZonedDateTime()     // Convert to `ZonedDateTime`.
    .getDayOfWeek().       // Extract a `DayOfWeek` enum object, one of seven pre-defined objects, one for each day of the week.
    .getDisplayName(       // Automatically localize, generating a `String` to represent the name of the day of the week.
        TextStyle.SHORT ,  // Specify how long or abbreviated.
        Locale.US          // Locale determines the human language and cultural norms used in localization.
    )                      // Returns a `String` object.

Mo

LocalDate.now( ZoneId.of( "Africa/Tunis" ) )              // Get current date for people in a certain region, without time-of-day and without time zone.
.getDayOfWeek()                                           // Extract a `DayOfWeek` enum object.
.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH )  // Generate a string representing that day-of-week, localized using the human language and cultural norms of a particular locale.

lundi

Java.time

Konvertieren Sie das problematische alte Java.util.GregorianCalendar -Objekt in ein modernes Java.time-Objekt, indem Sie neue Methoden aufrufen, die der alten Klasse hinzugefügt wurden.

ZonedDateTime zdt = myGregCal.toZonedDateTime();

Rufen Sie das Objekt DayOfWeek enum für diesen Moment in dieser Zeitzone ab.

DayOfWeek dow = zdt.getDayOfWeek();

dow.toString (): MITTWOCH

Übergeben Sie diese DayOfWeek -Objekte um Ihren Code, anstatt Ganzzahlen wie 1-7 oder Zeichenfolgen wie "MON" zu übergeben. Durch die Verwendung der Aufzählungsobjekte wird Ihr Code selbstdokumentierender, bietet Typensicherheit und stellt einen gültigen Wertebereich sicher.

Bitten Sie das Objekt DayOfWeek, den Namen des Wochentags in eine menschliche Sprache zu übersetzen, die in einer Locale definiert ist.

String output = 
    dow.getDisplayName( 
        TextStyle.FULL_STANDALONE , 
        Locale.CANADA_FRENCH 
    )
;

mercredi


Über Java.time

Das Java.time Framework ist in Java 8 und höher integriert. Diese Klassen ersetzen die lästigen alten Legacy Date-Time-Klassen wie Java.util.Date , Calendar , & SimpleDateFormat .

Das Joda-Time -Projekt, das sich jetzt im Wartungsmodus befindet, rät zur Migration auf die Java.time -Klassen.

Weitere Informationen finden Sie im Oracle Tutorial . Suchen Sie in Stack Overflow nach vielen Beispielen und Erklärungen. Spezifikation ist JSR 310 .

Sie können Java.time Objekte direkt mit Ihrer Datenbank austauschen. Verwenden Sie einen JDBC-Treiber , der mit JDBC 4.2 oder höher kompatibel ist. Keine Notwendigkeit für Zeichenfolgen, keine Notwendigkeit für Java.sql.* Klassen.

Woher bekomme ich die Java.time-Klassen?

0
Basil Bourque