17

据我所知,在 Java 中,我可以在正常(星期五)或短模式(星期五)下获得工作日。但是,有没有办法只获得第一个字母?

我以为我可以使用“子字符串”来获取第一个字母,但并非所有语言都正确。例如,西班牙的工作日是:Lunes、Martes、Miércoles、Jueves、Viernes、Sábado 和 Domingo,“Miércoles”的第一个字母是 X 而不是 M,以区别于“Martes”。

4

5 回答 5

14

在 Android 中,您可以将 SimpleDateFormat 与“EEEEE”一起使用。在下一个示例中,您可以看到它。

SimpleDateFormat formatLetterDay = new SimpleDateFormat("EEEEE",Locale.getDefault());
String letter = formatLetterDay.format(new Date());
于 2014-06-25T14:53:52.253 回答
6

As mentioned above there is no standard Java support for this. Using the formatting string "EEEEE" however is not guaranteed to work on all Android devices. The following code is guaranteed to work on any device:

public String firstLetterOfDayOfTheWeek(Date date) {

    Locale locale = Locale.getDefault(); 
    DateFormat weekdayNameFormat = new SimpleDateFormat("EEE", locale); 
    String weekday = weekdayNameFormat.format(date); 
    return weekday.charAt(0)+""; 
}
于 2014-10-01T01:11:42.317 回答
4

没有标准的 Java API 支持这样做。

部分原因是许多(甚至大多数)语言没有传统的唯一单字母工作日缩写。例如,在英语中没有(MTWTFSS)。

在许多/大多数语言环境中不起作用的(假设的)格式化选项1将成为国际化的障碍,而不是帮助。


1 - 我的意思是在人类意义上。你可以发明一个约定,但人们不会理解缩写的含义。

于 2013-06-06T10:23:06.957 回答
1

我意识到 OP 正在要求跨语言的标准,但这并没有解决这个问题。但是有/曾经有一个使用单字符星期几缩写的标准。

回到大型机时代,使用 1 个字符的“星期几”缩写是很常见的,要么将星期几存储在 1 个字符字段中(以节省宝贵的空间),要么为单字符列设置一个报告标题。“标准”是使用 MTWRFSU,其中 R 代表星期四,U 代表星期日。

我找不到任何明确的参考(这就是我引用“标准”的原因,但这里有几个例子: http ://eventguide.com/topics/one_digit_day_abbreviations.html http://www.registrar.ucla。 edu/soc/definitions.htm#Anchor-Days-3800

于 2014-01-10T16:15:34.227 回答
0

我认为没有直接的java函数来获取第一个字母,也没有标准的方法来做到这一点。

您可以参考此链接使用 substring() java 方法获取字符串 day 的第一个字母

在Java中给定一个字符串,只需取前X个字母

于 2013-06-06T10:24:01.967 回答