日期时间目标没有格式
您的评论表示您混为一谈日期时间目标与代表其值的字符串。
日期时间对象没有格式。这些对象可以生成字符串来表示它们的值,但是这些字符串是不同的和独立的。同样,日期时间对象可以通过解析一个字符串来实例化,但新的日期对象将是不同的并且是分开的。
本地化
您可以生成如图所示在您指定的某些格式模式Answer by VHS的字符串。但通常更好的方法是让java.time自动为您定位。
要本地化,指定:
FormatStyle
,以确定该字符串应该是多长或缩写是。
Locale
确定(a)用于翻译日期名称,月份名称等的人类语言,以及(b)用于确定缩写,大写,标点符号,分隔符等问题的文化规范。
实施例:
Locale l = Locale.CANADA_FRENCH ; // Or Locale.US, Locale.ITALY, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(l);
String output = myLocalDate.format(f);
DateTimeFormatterBuilder
的类是特别需要。通常你需要的是DateTimeFormatter
类。
看到这个例子code run live at IdeOne.com。但要小心IdeOne.com网站的Java实现的局限性:备用语言环境会被忽略,硬编码为单个英文语言环境(可能是Locale.US)。
DateTimeFormatter formatter = DateTimeFormatter.BASIC_ISO_DATE;
LocalDate localDate = LocalDate.parse("20120403", formatter);
String outputStandard = localDate.toString();
DateTimeFormatter fCanadaFrench =
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)
.withLocale(Locale.CANADA_FRENCH) ;
String outputCanadaFrench = localDate.format(fCanadaFrench) ;
DateTimeFormatter fUS =
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG)
.withLocale(Locale.US) ;
String outputUS = localDate.format(fUS) ;
localDate。的toString():2012-04-03
outputCanadaFrench:3艾薇2012
outputUS:2012年4月3日
https://docs.oracle.com/javase/tutorial/datetime/iso /format.html – shmosel