gpt4 book ai didi

java - 如何使用 Locale 将三个数字解析为 LocalDate?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:12 27 4
gpt4 key购买 nike

我正在尝试使用新的 Java 8 日期和时间 API 将三个数字(如 [2, 10, 2014])解析为 LocalDate

一切听起来都比较容易,对吧?好吧,也许不是。
额外的限制是我需要考虑语言环境,例如荷兰语和美国语使用不同的日期格式。

我唯一的输入是三个数字和语言环境,输出应该是格式正确的日期,格式为 LocalDate

我认为我需要执行以下步骤:

  1. 从可以读取三个数字的 Locale 获取转换器。
  2. 使用转换器,将三个数字转换为 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);

另请记住,我在谈论数字的概念,但它们需要表示为字符串,以适应使用除数字 0-9 之外的其他 Unicode 字符作为数字的语言.

最佳答案

首先从数字创建一个字符串,然后你可以使用类似的东西

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.FormatStyle;
import java.util.Locale;

public class IntegerDateTest {

public static void main(String args[]) {
int[][] dates = {{10, 02, 2014}, {02, 10, 2014}, {2014, 10, 02}};
Locale[] locales = {Locale.ENGLISH, Locale.FRENCH, Locale.JAPANESE};

for (int i = 0; i < 3; i++) {
int[] dateParts = dates[i];
Locale locale = locales[i];
String date = String.format("%02d/%02d/%02d", dateParts[0] % 100,
dateParts[1] % 100, dateParts[2] % 100);
System.out.printf("Locale : %s, Str Date : %s,", locale, date);
DateTimeFormatter df = new DateTimeFormatterBuilder().append(
DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT))
.toFormatter(locale);
System.out.printf(" Parsed Date : %s\n",LocalDate.from(df.parse(date)));
}
}
}

输出

Locale : en, Str Date : 10/02/14, Parsed Date : 2014-10-02Locale : fr, Str Date : 02/10/14, Parsed Date : 2014-10-02Locale : ja, Str Date : 14/10/02, Parsed Date : 2014-10-02

关于java - 如何使用 Locale 将三个数字解析为 LocalDate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161705/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com