3 Stimmen

wie man das Datumsformat dazu bringt, Monat und Tag groß zu schreiben

Ich habe meine Strings wie folgt in meiner strings.xml:

<string name="day_format">EEEE</string>
<string name="date_format">dd. MMMM</string>
<string name="date_format_us">MMMM dd</string>

Und ich verwende sie so in meinem Code:

    private void reinit() {
    mDayFormat = getString(R.string.day_format);
    if (!DateFormat.is24HourFormat(this))
    {
    mDateFormat = getString(R.string.date_format_us);
    }
    else {
        mDateFormat = getString(R.string.date_format);
    }
    mTimeFormat = is24HourMode(this) ? FORMAT_24_HOURS : FORMAT_12_HOURS;
    mCalendar = Calendar.getInstance();
}

Aber es zeigt den Tag und den Monat in Kleinbuchstaben an, und ich möchte, dass beide groß geschrieben werden. Wie kann ich das erreichen?

5voto

Bozho Punkte 570413

Sie können verwenden WordUtils.capitalize(..) von commons-lang (für die Ergebniszeichenfolge)

(dies ist für den Fall, dass Sie groß schreiben wollen - d.h. nur den ersten Buchstaben groß schreiben. Ansonsten können Sie einfach verwenden .toUpperCase() )

Update: Da es sich offenbar um Android handelt, können Sie die Quellen von WordUtils und kopieren Sie die Implementierung von dort, anstatt die gesamte Bibliothek zu holen.

2voto

madhurtanwani Punkte 1199

String's toUpperCase() ?

2voto

tristan202 Punkte 1053

Ich habe es so eingerichtet:

        final CharSequence date = DateFormat.format(mDateFormat, mCalendar);
    final CharSequence day = DateFormat.format(mDayFormat, mCalendar);
    String time = (String) DateFormat.format(mTimeFormat, mCalendar);
    RemoteViews views = new RemoteViews(getPackageName(), R.layout.clock2by2);
    String days = new String(day.toString().substring(0,1).toUpperCase() + day.toString().substring(1));
    String dates = new String(date.toString().substring(0,1).toUpperCase() + date.toString().substring(1));

    views.setTextViewText(R.id.Day, days);
    views.setTextViewText(R.id.Date, dates);
    views.setImageViewBitmap(R.id.TimeView, buildUpdate(time));

2voto

Es gibt genauere Möglichkeiten, dies zu tun. Sie können jeden Teil Ihres Formatierers mit DateFormatSymbols steuern.

Sieh dir das an, das ist wunderschön:

Scanner s = new Scanner(System.in);
SimpleDateFormat simpleDateFormatFrom = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormatTo = new SimpleDateFormat("MMM dd, yyyy");

DateFormatSymbols dateFormatSymbols = new DateFormatSymbols();
String[] months = simpleDateFormatTo.getDateFormatSymbols().getShortMonths();
for (int i = 0; i < months.length; i++) {
    months[i] = months[i].toUpperCase();
}
dateFormatSymbols.setShortMonths(months);
simpleDateFormatTo.setDateFormatSymbols(dateFormatSymbols);

Date date = simpleDateFormatFrom.parse(s.next());
System.out.println(simpleDateFormatTo.format(date));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X