更新:
在查看更新后的问题后,问题似乎是因为在运行 CircleCI 的机器上缺少ThreeTen Android Backport库。在没有这个库的情况下,可能默认java.time
是在这台机器上重新编译代码的时候。你应该在这台机器上检查一些东西:
- 如果库已成功导入。
- 如果缺少某些类型,是否有任何设置可以自动导入最合适的类型。
- 如果JDK版本与本地机器相同。
原答案:
您可以使用TextStyle.SHORT_STANDALONE
import java.util.Locale;
import org.threeten.bp.LocalDate;
import org.threeten.bp.format.TextStyle;
class Main {
public static void main(String[] args) {
LocalDate localDate = LocalDate.of(2019, 12, 20);
String dayOfWeek = localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT_STANDALONE, Locale.GERMAN);
System.out.println(dayOfWeek);
}
}
输出:
Fr
TextStyle.SHORT
不过,我的系统上的输出中没有一个点。尽管如此,如果您仍然想使用TextStyle.SHORT
并且没有点(或任何标点符号),您可以用空白字符串替换每个标点符号。
import java.util.Locale;
import org.threeten.bp.LocalDate;
import org.threeten.bp.format.TextStyle;
class Main {
public static void main(String[] args) {
LocalDate localDate = LocalDate.of(2019, 12, 20);
String dayOfWeek = localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.GERMANY);
System.out.println(dayOfWeek);
// Remove all punctuation mark
dayOfWeek = dayOfWeek.replaceAll("\\p{Punct}", "");
System.out.println(dayOfWeek);
}
}
输出:
Fr
Fr
注意:TextStyle.SHORT
使用 API 更改的结果java.time
如下所示:
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Locale;
class Main {
public static void main(String[] args) {
LocalDate localDate = LocalDate.of(2019, 12, 20);
String dayOfWeek = localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT_STANDALONE, Locale.GERMANY);
System.out.println(dayOfWeek);
dayOfWeek = localDate.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.GERMANY);
System.out.println(dayOfWeek);
// Remove all punctuation mark
dayOfWeek = dayOfWeek.replaceAll("\\p{Punct}", "");
System.out.println(dayOfWeek);
}
}
输出:
Fr
Fr.
Fr