gpt4 book ai didi

java - 按照月份名称在前的格式获取日期

转载 作者:行者123 更新时间:2023-12-02 10:49:31 24 4
gpt4 key购买 nike

我得到的字符串格式如下所示

03-12-2018

我想根据 Java 8 标准将其转换为以下格式,请告知

December 03 , 2018  

我尝试过的内容如下所示,但我没有成功,请告知如何实现相同的目标

SimpleDateFormat month_date = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

String actualDate = "03-12-2018";

Date date = sdf.parse(actualDate);

String month_name = month_date.format(date);
System.out.println("Month :" + month_name);

最佳答案

java.time

    DateTimeFormatter originalFormatter = DateTimeFormatter.ofPattern("dd-MM-uuuu");
DateTimeFormatter monthFirst = DateTimeFormatter
.ofLocalizedDate(FormatStyle.LONG)
.withLocale(Locale.ENGLISH);

String actualDate = "03-12-2018";
LocalDate date = LocalDate.parse(actualDate, originalFormatter);
String monthName = date.format(monthFirst);
System.out.println("Month :" + monthName);

输出:

Month :December 3, 2018

由于您使用的是 Java 8(即使您没有使用),请避免使用早已过时且非常麻烦的 SimpleDateFormat 类。尽可能使用内置格式,而不是自行设计。

您的代码出了什么问题?

您解析了格式为 yyyy-MM-dd 的字符串 03-12-2018。因此,这将解析为公元 3 年(2015 年前)12 月的 2018 天。 12 月显然没有 2018 年的日子。因此,期待异常(exception)是公平的。这只是 SimpleDateFormat 麻烦的地方之一:使用标准设置,它只是不断地计算接下来的月份和年份的天数,并以第 9 年的 6 月 9 日结束,即 5 年半之后。接下来,您使用格式化程序格式化该日期,包括月份名称和年份,看来您忘记了月份的日期。无论如何,它打印为 Jun 0009 (您应该在问题中告诉我们,以便我们可以看到出了什么问题;此信息对于尝试解决您的问题非常有帮助)。

链接

Oracle tutorial: Date Time解释如何使用java.time

关于java - 按照月份名称在前的格式获取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52276189/

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