【发布时间】:2014-10-02 13:15:36
【问题描述】:
我正在尝试使用新的 Java 8 日期和时间 API 解析三个数字,例如 [2, 10, 2014] 到 LocalDate。
听起来都比较容易,对吧?好吧,也许不是。
额外的限制是我需要考虑语言环境,例如荷兰语和美国语使用不同的日期格式。
我唯一的输入是三个数字和语言环境,输出应该是格式正确的日期,格式为LocalDate。
我认为我将需要以下步骤:
- 从
Locale获取一个可以读取三个数字的转换器。 - 使用转换器,将三个数字转换为
LocalDate。
我环顾四周,尤其是在 DateTimeFormatter 类中,但它似乎希望明确地传入日、月和年格式,这对我来说不是一个选项。
如何在LocalDate 中转换三个数字(以任意顺序表示日、月和年)?
示例:
荷兰语格式:
Locale locale = new Locale("nl");
List<String> inputs = Arrays.asList("2", "10", "2014");
//output should equal
LocalDate.of(2014, 10, 2);
美式格式:
Locale locale = Locale.ENGLISH;
List<String> inputs = Arrays.asList("10", "2", "2014");
//output should equal
LocalDate.of(2014, 10, 2);
另外请记住,我说的是 数字 的概念,但它们需要表示为字符串,以适应使用其他 Unicode 字符而不是数字 0-9 作为数字的语言.
【问题讨论】:
-
肮脏的解决方案:也许是一个将区域设置映射到特定日期格式的实用程序? Date Format by Country 从日期格式可以推断出数字的顺序(即日、月、年)
-
@gtgaxiola 我希望有人已经做了这样的事情,或者它是 API 的一部分,但我找不到它,但我可能错了。
-
@skiwi 绝对没有在API中看到过,我不知道社区中是否存在这样的项目。如果没有找到,创建它并开源它!或者放一个赏金,有人会的!
-
@assylias 我假设输入将是 [2,10,2014] Locale.nl_NL (例如荷兰语),它将给出 2014 年 10 月 2 日...同时 [2,10,2014 ] Locale.en_US(美国)将于 2014 年 2 月 10 日发布
-
@assylias 刚刚添加了示例。