作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要根据语言环境和格式样式动态解析日期字符串。
例如,我有一个阿尔巴尼亚语言环境,它具有模式 yy-MM-dd
我有以下代码可以根据当前的语言环境和格式样式解决此模式
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendLocalized(FormatStyle.SHORT, null)
.toFormatter()
.withLocale(Locale.forLanguageTag("sq-AL"));
TemporalAccessor temporalAccessor = formatter.parseBest("92-07-09", LocalDateTime::from, LocalDate::from, LocalTime::from);
System.out.println(temporalAccessor);
.appendValueReduced
的代码不起作用
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendLocalized(FormatStyle.SHORT, null)
.appendValueReduced(ChronoField.YEAR, 2, 2, LocalDate.now().minusYears(80))
.toFormatter()
.withLocale(Locale.forLanguageTag("sq-AL"));
.appendPattern()
的情况下工作的答案。并基于语言环境和格式样式
最佳答案
建立在 this answer ,您可以先从输入字符串中提取模式,如下所示:
String shortPattern =
DateTimeFormatterBuilder.getLocalizedDateTimePattern(
FormatStyle.SHORT,
null,
IsoChronology.INSTANCE,
Locale.forLanguageTag("sqi-AL")
);
System.out.println(shortPattern); //y-MM-d
y
明确给出s 已删除,因为 year 现在由
appendValueReduced
处理:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ofPattern(shortPattern.replaceAll("y","")))
.appendValueReduced(ChronoField.YEAR, 2, 4, LocalDate.now().minusYears(80))
.appendOptional(DateTimeFormatter.ofPattern(shortPattern.replaceAll("y","")))
.toFormatter();
TemporalAccessor temporalAccessor = formatter.parseBest("92-07-09", LocalDate::from, LocalDateTime::from);
System.out.println(temporalAccessor); //1992-07-09
appendOptional
的原因是如果语言环境模式末尾有年份,则可能会导致解析错误。例如,您的代码中的语言环境模式(
sq-AL
)实际上是
d.M.yy
.所以我们需要在两端检查年份。
关于java - 覆盖 DateTimeFormatter 本地化的世纪日期样式解析策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59583417/
有什么方法可以告诉 std::time_get get_date 现在是几世纪?我们处理 1900 年之前的日期。是否有更好的 C++ 日期时间库可以做到这一点?我们有一个处理几种文化的内部解决方案,
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我是一名优秀的程序员,十分优秀!