3

私のstrings.xmlにはそのような文字列があります:

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

そして、私はコードで次のようにそれらを使用します:

    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();
}

ただし、日と月は小文字で表示されるので、両方を大文字にしてほしい。どうすればそれを達成できますか?

4

4 に答える 4

5

commons-lang(結果文字列)WordUtils.capitalize(..)から使用できます

(これは、大文字にする場合です。つまり、最初の文字のみを大文字にします。それ以外の場合は、単純に使用できます.toUpperCase()

更新:これはAndroidのように見えるので、WordUtilsライブラリ全体を取得するのではなく、のソースを開いてそこから実装をコピーできます。

于 2010-12-11T13:01:08.883 に答える
2

String's toUpperCase()

于 2010-12-11T13:01:30.490 に答える
2

私はそれを次のように修正しました:

        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));
于 2010-12-11T17:13:23.767 に答える
0

これを行うためのより正確な方法があります。DateFormatSymbolsを使用して、フォーマッターの各部分を制御できます。

それを見てください、これは美しいです:

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));
于 2020-08-04T22:14:54.457 に答える