Ich möchte wissen, welcher aktuelle Wochentag (Montag, Dienstag ...) in der Landessprache des Benutzers ist. Zum Beispiel "Lundi", "Mardi" usw., wenn der Benutzer Franzose ist.
Ich habe diesen Beitrag gelesen, aber er gibt nur ein int zurück, keine Zeichenfolge mit dem Tag in der Sprache des Benutzers: Was ist der einfachste Weg, um den aktuellen Wochentag in Android abzurufen?
Wie erhalten Sie im Allgemeinen 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 Landessprache des Nutzers angibt.
Vielen Dank !!
quelle
DateFormatSymbols.getInstance()
(obwohl dies vorerst möglicherweise das gleiche Ergebnis liefert).Ich weiß schon geantwortet aber wer sucht 'Fr' so
für Fr -
SimpleDateFormat sdf = new SimpleDateFormat("EEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);
und wer eine vollständige Datumszeichenfolge möchte, kann 4E für Freitag verwenden
Für Freitag-
SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); Date d = new Date(); String dayOfTheWeek = sdf.format(d);
Genießen...
quelle
Um die Dinge kürzer zu machen Sie können dies verwenden:
android.text.format.DateFormat.format("EEEE", date);
Dies wird den Wochentag als String zurückgeben.
quelle
Ihr ist, was ich verwendet habe, um die Tagesnamen (
0-6
Mittelmonday - sunday
) zu erhalten: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); }
quelle
tl; dr
String output = LocalDate.now( ZoneId.of( "America/Montreal" ) ) .getDayOfWeek() .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;
java.time
Die in Java 8 und höher integrierten und auf Java 6 & 7 und Android zurückportierten java.time-Klassen enthalten die praktische
DayOfWeek
Aufzählung.Die Tage sind gemäß der Standarddefinition ISO 8601 von Montag bis Sonntag mit 1-7 nummeriert.
DayOfWeek dow = DayOfWeek.of( 1 );
Diese Aufzählung enthält die
getDisplayName
Methode zum Generieren einer Zeichenfolge des lokalisierten übersetzten Namens des Tages.Das
Locale
Objekt spezifiziert eine menschliche Sprache, die bei der Übersetzung verwendet werden soll, und spezifiziert kulturelle Normen, um Fragen wie Großschreibung und Zeichensetzung zu entscheiden.Verwenden Sie die
LocalDate
Klasse , um das heutige Datum zu erhalten . Beachten Sie, dass eine Zeitzone von entscheidender Bedeutung ist, da das Datum für jeden Moment weltweit variiert.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 orthogonale Probleme. Vielleicht möchten Sie eine französische Präsentation einer in Indien in Zonen aufgeteilten Datums- und Uhrzeit (
Asia/Kolkata
).Joda-Zeit
UPDATE: Das Joda-Time- Projekt, das sich jetzt im Wartungsmodus befindet , empfiehlt die Migration zu den Klassen java.time .
Die Joda-Time- Bibliothek bietet eine
Locale
gesteuerte Lokalisierung von Datums- und Uhrzeitwerten.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 );
Ü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?
quelle
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...
Happy Coding .....
quelle
Entschuldigung für die 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);
quelle
Ich benutze diese Lösung nur in Kotlin:
var date : String = DateFormat.format("EEEE dd-MMM-yyyy HH:mm a" , Date()) as String
quelle
Wenn Sie die ThreetenABP-Datumsbibliothek von Jake Warthon verwenden, haben Sie folgende Möglichkeiten:
auf Ihrer
dayOfWeek
Instanz. Weitere Informationen finden Sie unter : https://github.com/JakeWharton/ThreeTenABP https://www.threeten.org/threetenbp/apidocs/org/threeten/bp/format/TextStyle.htmlquelle
//selected date from calender SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy"); //Date and time String currentDate = sdf.format(myCalendar.getTime()); //selcted_day name SimpleDateFormat sdf_ = new SimpleDateFormat("EEEE"); String dayofweek=sdf_.format(myCalendar.getTime()); current_date.setText(currentDate); lbl_current_date.setText(dayofweek); Log.e("dayname", dayofweek);
quelle
SimpleDateFormat
,Date
undCalendar
(auch in der Frage verwendet wird ).