如何在 Android(例如 Google 日历应用程序)中获取非常短的星期几名称

How to get very short week day names in Android like Google Calendar app

我正在寻找一种解决方案来获取非常短的工作日名称,例如 Google 日历应用程序。

下面是我试过的:

String[] shortWeekDays = DateFormatSymbols.getInstance(Locale.getDefault()).getShortWeekdays();

结果是

Sun, Mon, Tue, Wed, Thu, Fri, Sat

Google 日历(非常短的星期名称)

S, M, T, W, T, F, S

我喜欢使用工作日名称,例如 Google 日历

已更新 我正在考虑获取工作日名称的首字母(在 DateFormatSymbols.getShortWeekdays 之后)但是对于某些语言(中文、新加坡、台湾),所有 7 个工作日的首字母都是相同的。看我下面的测试

String[] weekDays = DateFormatSymbols.getInstance(Locale.CHINESE).getShortWeekdays();

// 星期日, 星期一, 星期二, 星期三, 星期四, 星期五, 星期六]

我正在考虑使用字符串资源,但我的应用程序根据当前使用的语言环境支持世界各地的所有语言,我很难为所有语言设置所有非常短的工作日名称。

有人有想法吗?谢谢!

在检查了 Java 中所有可用的语言环境并检查了它们的短星期名称之后。我有如下解决方案。它可能会帮助其他人

  1. 对于语言环境:中国-中文、新加坡-中文、台湾-中文

    • 我将使用字符串资源来存储非常短的工作日名称,因为这些区域设置 return 7 个工作日的第一个字母相同。
  2. 其余语言环境

    • 使用Java已经提供的API:DateFormatSymbols.getShortWeekdays
    • 然后获取第一个字母(或前两个字母)

我见过的 one-character 本地化日期名称缩写的唯一解决方案如下:

DateUtils.getDayOfWeekString(dayOfWeek, DateUtils.LENGTH_SHORTEST)

使用 DateFormatSymbols.getShortWeekdays 然后将字符从前面拉开在其他语言环境中不起作用。例如在阿拉伯语中,这样做会导致一周中的每一天都使用相同的字符。

/**
* @param day Int
* @return short day name
* Calendar.MONDAY -> Mon
*/
fun getShortDayName(day: Int): String {
   val c = Calendar.getInstance()
   c.set(Calendar.DAY_OF_WEEK, day)
   return String.format("%ta", c)
}

有关格式化程序短转换的详细信息Formatter

要仅获取第一个字母,您可以使用 TextView maxLength=1 或 getShortDayName(Calendar.TUESDAY)[0] //its will return 'T'