小智 10
在Android中,您可以将SimpleDateFormat与"EEEEE"一起使用.在下一个例子中,您可以看到它.
SimpleDateFormat formatLetterDay = new SimpleDateFormat("EEEEE",Locale.getDefault());
String letter = formatLetterDay.format(new Date());
Run Code Online (Sandbox Code Playgroud)
如上所述,没有标准的Java支持.但是,使用格式化字符串"EEEEE"并不能保证在所有Android设备上都能正常工作.以下代码保证可在任何设备上运行:
public String firstLetterOfDayOfTheWeek(Date date) {
Locale locale = Locale.getDefault();
DateFormat weekdayNameFormat = new SimpleDateFormat("EEE", locale);
String weekday = weekdayNameFormat.format(date);
return weekday.charAt(0)+"";
}
Run Code Online (Sandbox Code Playgroud)
没有标准的 Java API 支持执行此操作1。
\n部分原因是许多(甚至可能是大多数)语言没有传统的独特的单字母工作日缩写。例如,英语中没有 (MTWTFSS)。
\n在许多/大多数语言环境中不起作用的(假设的)格式选项2将成为国际化的障碍而不是帮助。
\n有人指出:
\nSimpleDateFormat formatLetterDay = \n new SimpleDateFormat("EEEEE", Locale.getDefault());\nString letter = formatLetterDay.format(new Date());\n
Run Code Online (Sandbox Code Playgroud)\n给出了更高版本的 Android(18 及更高版本)的一个字母缩写,尽管 javadocs没有提及这一点。看来这个“5 个字母”的格式是从javadocDateTimeFormatter
中借用的:
\n\n模式字母的数量决定了格式。
\n文本:文本样式根据使用的模式字母的数量确定。少于 4 个模式字母将使用缩写形式。正好 4 个模式字母将使用完整形式。正好 5 个模式字母将使用窄形式。...
\n
如果您的目标是 Android API 26 或更高版本,则应考虑使用这些java.time.*
类而不是旧类。
但无论哪种方式,这都不能保证为您提供独特的日期信件。
\n1 - 我所说的“that”是指映射到唯一的1 字母缩写。
\n2 - 我的意思是它在人类意义上不起作用。你可以发明一个约定,但一般人不会理解缩写的含义;例如,他们不知道“X”意味着“Mi\xc3\xa9rcoles”,或者在英语中“R”意味着“星期四”(参见/sf/answers/1473441861/) 。
归档时间: |
|
查看次数: |
7615 次 |
最近记录: |