首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LocalDate.parse返回DateTimeParseException

LocalDate.parse返回DateTimeParseException
EN

Stack Overflow用户
提问于 2022-07-19 17:23:44
回答 1查看 225关注 0票数 0

标题是最主要的解释。我非常简单地尝试将charSequence/String解析为一个LocalDate。我有两种不同的格式,所以我尝试了两次解析,但两者都不起作用。相关守则:

代码语言:javascript
复制
public static LocalDate ToDate(CharSequence charSequence ){ // Or String string
            LocalDate date = null;
            try{
                DateTimeFormatter formatter = DateTimeFormatter.ofPattern(standardFormat); 
// standardDateFormat "dd MMMM, yyyy"
                date = LocalDate.parse(charSequence, formatter);
            } catch (DateTimeParseException a){
                Log.d("ToDate", charSequence + " =/= " + standardFormat + " :: standard format failure");
            } finally {
                try {
                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(simpleDateFormat); 
// simpleDateFormat = "dd MMM"
                    date = LocalDate.parse(charSequence, formatter);
                } catch (DateTimeParseException a) {
                    Log.d("ToDate", charSequence + " =/= " + simpleDateFormat + " :: simple format failure");
                }
            }
            return date;
        }

返回的异常:

代码语言:javascript
复制
2022-07-19 10:10:14.759 9625-9625/com.learn.myapplication D/ToDate: 19 Jul =/= dd MMMM, yyyy :: standard format failure
2022-07-19 10:10:14.760 9625-9625/com.learn.myapplication D/ToDate: 19 Jul =/= dd MMM :: simple format failure // ?????

这对我来说是一样的格式,所以我想我缺少一些语法了吧?

EN

回答 1

Stack Overflow用户

发布于 2022-07-19 18:11:01

首先,教育数据发布者在以文本方式交换日期时间值时只使用标准的ISO 8601格式。代码中所显示的本地化文本应仅用于向用户表示,而不是用于数据交换或数据存储。

日期的标准格式是YYYY-MM-DD.一个月的白天,--MM-DD。

对于一个月和一个月的值,请使用MonthDay。没有一年,就不能将这样的值放在日期类型中。

如果您坚持解析本地化字符串,请提供一个Locale来确定用于解析诸如月份名称等项的人类语言和文化规范。

不要用自己的消息覆盖异常。由于这样做,我们无法正确诊断您的问题。

生成本地化文本。

代码语言:javascript
复制
Locale locale = Locale.US ;
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
MonthDay md = MonthDay.now( z ) ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd MMM" ).withLocale( locale ) ;
String output = md.format( f) ;
System.out.println( "output = " + output );

分析,如果你坚持的话,违背我的建议。

产出=7月20日

代码语言:javascript
复制
String input = "20 Jul" ;
MonthDay mdParsed = MonthDay.parse( input , f  );

System.out.println( "mdParsed = " + mdParsed );

mdParsed =-07-20

您可以从那个LocalDate生成一个MonthDay

代码语言:javascript
复制
LocalDate ld = md.atYear( 2022 ) ;

ld.toString():2022-07-20

您可以使用相同的想法解析日期值。

所有这些都已经在堆栈溢出中被多次覆盖。寻找更多的知识。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73041167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档