Java YearMonth 不会解析,但只能在我的电脑上解析?
Java YearMonth will not parse, but only on my computer?
我一直在做一个需要我以这种方式解析字符串的项目
我已经把一直抛错的小部分分开了,
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
public class TestingYearMonth {
public static void main(String[] args) {
YearMonth yearMonth = YearMonth.parse("Feb-17", DateTimeFormatter.ofPattern("MMM-yy"));
System.out.println(yearMonth.getMonth() + " " + yearMonth.getYear());
}
}
我的老师 运行 完全相同的代码和它 returns 输出没问题。但是当我 运行 它时,我得到以下错误
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Feb-17' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.YearMonth.parse(YearMonth.java:295)
at com.ethanbradley.assignment6.TestingYearMonth.main(TestingYearMonth.java:10)
我们检查过,我的 jdk 没问题(jdk 11,亚马逊 coretto 版本)
我真的不明白为什么这不起作用,请帮助聪明的互联网人....
指定 Locale
您的 JVM 的默认语言环境可能不是将“Feb”识别为二月的语言环境。
指定一个Locale
来确定解析月份名称时使用的人类语言和文化规范。
Locale locale = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM-yy" , locale ) ;
YearMonth yearMonth = YearMonth.parse( "Feb-17" , f );
看到这个code run live at IdeOne.com。
ISO 8601
使用本地化文本进行数据交换是不明智的。我建议您向您的数据发布者介绍 ISO 8601 将日期时间值作为文本交换的标准格式。
年-月的标准格式是 YYYY-MM。示例:2017-02
.
java.time类默认使用 ISO 8601 格式。
YearMonth.parse( "2017-02" )
我一直在做一个需要我以这种方式解析字符串的项目 我已经把一直抛错的小部分分开了,
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;
public class TestingYearMonth {
public static void main(String[] args) {
YearMonth yearMonth = YearMonth.parse("Feb-17", DateTimeFormatter.ofPattern("MMM-yy"));
System.out.println(yearMonth.getMonth() + " " + yearMonth.getYear());
}
}
我的老师 运行 完全相同的代码和它 returns 输出没问题。但是当我 运行 它时,我得到以下错误
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Feb-17' could not be parsed at index 0
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2046)
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948)
at java.base/java.time.YearMonth.parse(YearMonth.java:295)
at com.ethanbradley.assignment6.TestingYearMonth.main(TestingYearMonth.java:10)
我们检查过,我的 jdk 没问题(jdk 11,亚马逊 coretto 版本) 我真的不明白为什么这不起作用,请帮助聪明的互联网人....
指定 Locale
您的 JVM 的默认语言环境可能不是将“Feb”识别为二月的语言环境。
指定一个Locale
来确定解析月份名称时使用的人类语言和文化规范。
Locale locale = Locale.US ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM-yy" , locale ) ;
YearMonth yearMonth = YearMonth.parse( "Feb-17" , f );
看到这个code run live at IdeOne.com。
ISO 8601
使用本地化文本进行数据交换是不明智的。我建议您向您的数据发布者介绍 ISO 8601 将日期时间值作为文本交换的标准格式。
年-月的标准格式是 YYYY-MM。示例:2017-02
.
java.time类默认使用 ISO 8601 格式。
YearMonth.parse( "2017-02" )