DateTimeFormatter 将纪元格式化为 'n.e.'
Era formatted as 'n.e.' by DateTimeFormatter
当我为时代创建格式化程序时:
import java.time.*
import java.time.format.*
var formatter = DateTimeFormatter.ofPattern("G");
然后使用它我得到 n.e. 而不是 AD.
formatter.format(LocalDateTime.now()); //n.e.
为什么时代格式为n.e?
我在 ubuntu 仿生上使用 java 11:
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
您的默认语言环境似乎是 波兰语。我有两个理由认为:
a) 你的名字听起来像波兰语,所以你可能在波兰的计算机上工作。我的猜测对吗?
b) 在波兰语中:时代 AD 确实被格式化为 "n.e."。此缩写代表 "naszej ery"(= 当前时代)。
无论您的语言环境是什么,我都没有发现任何错误。如果您坚持 "AD" 那么请通过将其作为额外参数传递给 DateTimeFormatter
-factory 方法来适当地更改语言环境。如果您找不到这样的语言环境,那么您也可以考虑使用构建器方法并使用:
Map<Long, String> map = new HashMap<>();
map.put(0, "BC");
map.put(1, "AD");
DateTimeFormatter dtf =
new DateTimeFormatterBuilder().appendText(ChronoField.ERA, map).toFormatter();
当我为时代创建格式化程序时:
import java.time.*
import java.time.format.*
var formatter = DateTimeFormatter.ofPattern("G");
然后使用它我得到 n.e. 而不是 AD.
formatter.format(LocalDateTime.now()); //n.e.
为什么时代格式为n.e?
我在 ubuntu 仿生上使用 java 11:
openjdk 11 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)
您的默认语言环境似乎是 波兰语。我有两个理由认为:
a) 你的名字听起来像波兰语,所以你可能在波兰的计算机上工作。我的猜测对吗?
b) 在波兰语中:时代 AD 确实被格式化为 "n.e."。此缩写代表 "naszej ery"(= 当前时代)。
无论您的语言环境是什么,我都没有发现任何错误。如果您坚持 "AD" 那么请通过将其作为额外参数传递给 DateTimeFormatter
-factory 方法来适当地更改语言环境。如果您找不到这样的语言环境,那么您也可以考虑使用构建器方法并使用:
Map<Long, String> map = new HashMap<>();
map.put(0, "BC");
map.put(1, "AD");
DateTimeFormatter dtf =
new DateTimeFormatterBuilder().appendText(ChronoField.ERA, map).toFormatter();