如何在Android日历应用中获取非常短的工作日名称

时间:2015-04-15 14:25:03

标签: android localization dayofweek weekday

我找到了一个解决方案,可以获得非常短的工作日名称,例如Google Calendar App。

以下是我的尝试:

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

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

我正在考虑使用String资源但是我的应用程序基于当前使用的语言环境支持世界各地的所有语言,我很难为所有语言提供所有非常短的工作日名称。

有人有想法吗?谢谢!

3 个答案:

答案 0 :(得分:2)

在审核了Java中提供的所有区域设置并检查其短工作日名称后。我的解决方案如下。它可能会帮助其他人

  1. 适合当地人:中国华人,新加坡华人,台湾华人

    • 我将使用String资源来存储非常短的工作日名称,因为这些语言环境会在7周工作日内返回相同的第一个字母。
  2. 其他语言环境

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

答案 1 :(得分:0)

我见过的本地化日期名称的单字符缩写的唯一解决方案如下:

DateUtils.getDayOfWeekString(dayOfWeek, DateUtils.LENGTH_SHORTEST)

使用DateFormatSymbols.getShortWeekdays然后从前面拉出字符在其他区域设置中不起作用。例如,在阿拉伯语中,这样做会在一周中的每一天产生相同的字符。

答案 2 :(得分:0)

/**
* @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'