gpt4 book ai didi

java - 如何将月份字符串(例如 "January"、 "February")转换为整数值?

转载 作者:行者123 更新时间:2023-12-01 07:45:42 26 4
gpt4 key购买 nike

我有一个名为“事件”的项目,其中包含以下变量、值、月份、年份和邮政编码。由于偏好,我选择将月份变量写为字符串类型,但我知道有些人更喜欢将其写为整数。我想知道我该怎么写?目前,我只有每个实例的简单访问器和修改器方法,那么我是否需要编写一个新方法来转换它?我会使用 parseInt 吗?语法是如何工作的,或者我是否使用 java 库?我的主要问题是弄清楚语法是如何工作的。

最佳答案

在 Java 8+ 中,您可以使用 Month枚举。

不幸的是,Month 不提供 parse 方法,就像大多数其他 java.time 类一样,但是,如果您查看在实现getDisplayName(TextStyle style, Locale locale)方法,你会发现:

public String getDisplayName(TextStyle style, Locale locale) {
return new DateTimeFormatterBuilder()
.appendText(MONTH_OF_YEAR, style)
.toFormatter(locale)
.format(this);
}

因此,为了解析,我们可以使用相同类型的格式化程序创建自己的方法,如下所示:

public static Month parseMonth(CharSequence text, TextStyle style, Locale locale) {
DateTimeFormatter fmt = new DateTimeFormatterBuilder()
.appendText(ChronoField.MONTH_OF_YEAR, style)
.toFormatter(locale);
return Month.from(fmt.parse(text));
}

示例

String s = Month.OCTOBER.getDisplayName(TextStyle.FULL, Locale.US);
System.out.println(s); // prints: October

Month month = parseMonth("October", TextStyle.FULL, Locale.US);
System.out.println(month); // prints: OCTOBER
System.out.println(month.getValue()); // prints: 10
<小时/>

在Java<8中,可以使用SimpleDateFormat来解析文本:

public static int parseMonth(String text) {
SimpleDateFormat fmt = new SimpleDateFormat("MMMM", Locale.US);
try {
Calendar cal = Calendar.getInstance();
cal.setTime(fmt.parse(text));
return cal.get(Calendar.MONTH) + 1;
} catch (ParseException e) {
throw new IllegalArgumentException("Invalid month: " + text);
}
}

示例

int month = parseMonth("October");
System.out.println(month); // prints: 10

关于java - 如何将月份字符串(例如 "January"、 "February")转换为整数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52934790/

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