如何根据语言环境格式化YearMonth和MonthDay?

如何根据语言环境格式化YearMonth和MonthDay?,第1张

如何根据语言环境格式化YearMonth和MonthDay?

似乎无法在Java-9中修复此Java-8错误,因为即使feature-
extension-complete-
date

也已经结束。让我们看看它是否将在Java-10中得到修复,而Java-10仍然有很长的路要走…

当然,正如此处的一个答案所建议的那样,您可以尝试处理给定的本地化日期模式以删除不相关的部分。但是我仍然认为这种方法容易出错,因为周围仍然有很多语言环境。实际上,对于中国人来说,公认的答案是有缺陷的。本地化文字是这里的主要问题。也许至少可以针对该重要语言确定可接受的答案,但是您可能还会考虑
另外两个具有良好国际化功能的库,这些库可以更可靠地解决您的问题

a)ICU4J

DateFormat df = DateFormat.getInstanceForSkeleton(DateFormat.YEAR_MONTH, Locale.CHINESE);String output = df.format(new Date());System.out.println("ICU4J=" + output); // 2017年1月

但是,一个问题是与Java-8类型(尤其是

MonthDay
和)缺乏互 *** 作性
YearMonth
。解决方案需要像“
Date.from(YearMonth.now().atDay(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
可能”
这样的东西,但麻烦。

b)我的库Time4J(与ICU4J具有相同的数据库)

ChronoFormatter<CalendarMonth> cf =    ChronoFormatter.ofStyle(DisplayMode.FULL, Locale.CHINESE, CalendarMonth.chronology());CalendarMonth cm =     CalendarMonth.from(YearMonth.now()); // or: CalendarMonth.nowInSystemTime()System.out.println("Time4J=" + cf.format(cm)); // 2017年1月

与Java-8的互 *** 作性也存在相反的方向。而Time4J-counterpart的

MonthDay
是class
AnnualDate


旁注:@Julian收益率的中文可接受答案:2017年1(需要确定)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5428336.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存