Android: Wie bekomme ich den aktuellen Wochentag (Montag, etc …) in der Sprache des Benutzers?

Ich möchte wissen, wie der aktuelle Wochentag (Montag, Dienstag …) in der lokalen Sprache des Benutzers ist. Zum Beispiel “Lundi” “Mardi” etc … wenn der Benutzer Französisch ist.

Ich habe diesen Post gelesen, es gibt aber nur einen int zurück, keine Zeichenfolge mit dem Tag in der Sprache des Benutzers: Was ist der einfachste Weg, um den aktuellen Wochentag in Android zu bekommen?

Allgemeiner, wie erhalten Sie alle Wochentage und alle Monate des Jahres in der Sprache des Benutzers geschrieben?

Ich denke, dass dies möglich ist, da beispielsweise die Google-Agenda die Tage und Monate in der lokalen Sprache des Benutzers angibt.

Vielen Dank !!

Verwenden Sie SimpleDateFormat zum Formatieren von Datum und Uhrzeit in eine vom Benutzer lesbare Zeichenfolge in Bezug auf das Gebietsschema des Benutzers.

Kleines Beispiel um den aktuellen Wochentag zu erhalten (zB “Montag”) :

SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

Versuche dies:

 int dayOfWeek = date.get(Calendar.DAY_OF_WEEK); String weekday = new DateFormatSymbols().getShortWeekdays()[dayOfWeek]; 

Um die Dinge kürzer zu machen, können Sie Folgendes verwenden:

 android.text.format.DateFormat.format("EEEE", date); 

welches den Wochentag als String zurückgibt.

Hers ist, was ich verwendet habe, um die 0-6 zu erhalten ( 0-6 bedeutet monday - sunday ):

 public static String getFullDayName(int day) { Calendar c = Calendar.getInstance(); // date doesn't matter - it has to be a Monday // I new that first August 2011 is one ;-) c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%tA", c); } public static String getShortDayName(int day) { Calendar c = Calendar.getInstance(); c.set(2011, 7, 1, 0, 0, 0); c.add(Calendar.DAY_OF_MONTH, day); return String.format("%ta", c); } 

Ich weiß schon beantwortet aber wer sucht ‘Fr’ so

für Fr –

 SimpleDateFormat sdf = new SimpleDateFormat("EEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

und wer die volle Datumszeichenkette wünscht, kann 4E für Freitag benutzen

Für Freitag-

 SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d); 

Genießen…

Versuche dies…

 //global declaration private TextView timeUpdate; Calendar calendar; ....... timeUpdate = (TextView) findViewById(R.id.timeUpdate); //initialize in onCreate() ....... //in onStart() calendar = Calendar.getInstance(); //date format is: "Date-Month-Year Hour:Minutes am/pm" SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm a"); //Date and time String currentDate = sdf.format(calendar.getTime()); //Day of Name in full form like,"Saturday", or if you need the first three characters you have to put "EEE" in the date format and your result will be "Sat". SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); Date date = new Date(); String dayName = sdf_.format(date); timeUpdate.setText("" + dayName + " " + currentDate + ""); 

Das Ergebnis ist… Bildbeschreibung hier eingeben

glückliche Kodierung …..

tl; dr

 String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ) .getDayOfWeek() .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; 

java.time

Die java.time-classn, die in Java 8 und höher integriert sind und auf Java 6 & 7 und Android portiert wurden, enthalten die praktische DayOfWeek .

Die Tage sind gemäß der Norm ISO 8601, 1-7 für Montag-Sonntag, nummeriert.

 DayOfWeek dow = DayOfWeek.of( 1 ); 

Diese Aufzählung enthält die getDisplayName Methode zum Generieren einer getDisplayName des lokalisierten übersetzten Namens des Tages.

Das Locale Objekt gibt eine menschliche Sprache an, die bei der Übersetzung verwendet werden soll, und legt kulturelle Normen fest, um Themen wie Groß- und Kleinschreibung und Interpunktion zu bestimmen.

 String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; 

Verwenden Sie die LocalDate class, um das heutige Datum LocalDate . Beachten Sie, dass eine Zeitzone von entscheidender Bedeutung ist, da der Zeitpunkt für den jeweiligen Zeitpunkt weltweit unterschiedlich ist.

 ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( z ); DayOfWeek dow = today.getDayOfWeek(); String output = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; 

Beachten Sie, dass das Gebietsschema nichts mit der Zeitzone zu tun hat.zwei separate unterschiedliche orthogonale Probleme. Möglicherweise möchten Sie eine französische Präsentation eines in Indien ( Asia/Kolkata ) gezonten Datums-Zeit-Diagramms.

Joda-Zeit

UPDATE: Das Joda-Time- Projekt, jetzt im Wartungsmodus , rät zur Migration in die java.time- classn.

Die Joda-Time- Bibliothek bietet Locale gesteuerte Lokalisierung von Datum-Uhrzeit-Werten.

 DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ); DateTime now = DateTime.now( zone ); Locale locale = Locale.CANADA_FRENCH; DateTimeFormatter formatterUnJourQuébécois = DateTimeFormat.forPattern( "EEEE" ).withLocale( locale ); String output = formatterUnJourQuébécois.print( now ); System.out.println("output: " + output ); 

Ausgabe: samedi


Über java.time

Das Framework java.time ist in Java 8 und höher integriert. Diese classn ersetzen die problematischen alten Legacy- Date-Time-classn wie java.util.Date , Calendar und SimpleDateFormat .

Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration in die java.time- classn.

Weitere Informationen finden Sie im Oracle-Lernprogramm . Und suchen Sie nach Stack Overflow für viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .

Wo erhalten Sie die java.time classn?

  • Java SE 8 und SE 9 und später
    • Eingebaut.
    • Teil der Standard-Java-API mit einer gebündelten Implementierung.
    • Java 9 fügt einige kleinere functionen und Korrekturen hinzu.
  • Java SE 6 und SE 7
    • Ein großer Teil der java.time-functionalität wird in ThreeTen-Backport zurück zu Java 6 & 7 portiert .
  • Android
    • Das ThreeTenABP- Projekt passt ThreeTen-Backport (oben erwähnt) speziell für Android an.
    • Siehe Verwendung von ThreeTenABP ….

Sorry für späte Antwort. Aber das würde richtig funktionieren.

 daytext=(textview)findviewById(R.id.day); Calender c=Calender.getInstance(); SimpleDateFormat sd=new SimpleDateFormat("EEEE"); String dayofweek=sd.format(c.getTime()); daytext.setText(dayofweek);