如何获取日期格式以大写月份和日期
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()
?
【讨论】:
以上是关于如何获取日期格式以大写月份和日期的主要内容,如果未能解决你的问题,请参考以下文章