如何获取日期格式以大写月份和日期

Posted

技术标签:

【中文标题】如何获取日期格式以大写月份和日期【英文标题】:how to get dateformat to capitalize month and day 【发布时间】:2011-05-23 22:32:00 【问题描述】:

我的 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();

但它以小写形式显示日期和月份,我希望它都大写。我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

有更精确的方法可以做到这一点。您可以使用 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));

【讨论】:

【参考方案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));

【讨论】:

【参考方案3】:

您可以使用commons-lang 中的WordUtils.capitalize(..)(在结果字符串上)

(如果你想大写 - 即只大写第一个字母。否则你可以简单地使用.toUpperCase()

更新:由于看起来这是 android,您可以打开 WordUtils 的源并从那里复制实现,而不是获取整个库。

【讨论】:

+1,但我认为仅仅因为一个功能就将 commons jar 包含到 Android 应用程序中是不值得的。 toUpperCase() 应该没问题;即使您只想将第一个字母大写,如果您不需要来自 commons 的任何其他内容,也只需使用辅助方法。 我错过了那里的机器人。 (R 是唯一暗示这个方向的东西)【参考方案4】:

String's toUpperCase()?

【讨论】:

以上是关于如何获取日期格式以大写月份和日期的主要内容,如果未能解决你的问题,请参考以下文章

如何使用月份和年份格式以精确格式显示日期[重复]

如何在 BigQuery 中以字符串格式将工作日月份转换为日期?

SQL里怎么把日期截取为月份

更改日期选择器文本:大写月份

如何根据日期获取月份的天数?

如何使用包含友好日期和月份的 DateFormatter 格式化日期