gpt4 book ai didi

Java 8 格式化日期输入

转载 作者:行者123 更新时间:2023-12-02 12:23:32 27 4
gpt4 key购买 nike

我使用此代码来格式化格式化文本字段以输入月份和日期:

SimpleDateFormat sdf = new SimpleDateFormat("MM.dd");
DateFormatter df = new DateFormatter(sdf);
DefaultFormatterFactory ddf = new DefaultFormatterFactory(df, df, df, df);
datumTextField.setValue(new Date(System.currentTimeMillis()));
datumTextField.setFormatterFactory(ddf);

当输入无效日期时,例如。 13.10,魔术师在这行之后将其更改为1.10:

DateOfAdding = datumTextField.getText();

因此 DateOfAddig 值为 1.10。

如何关闭魔法师?

最佳答案

tl;博士

MonthDay.parse( 
"12.31" ,
DateTimeFormatter.ofPattern( "MM.dd" )
)

捕获DateTimeParseException无效输入。

java.time.MonthDay

现代方法使用 java.time 类,而不是问题中看到的麻烦的遗留类。

java.time 类中有 MonthDay ,正是您所需要的。

我建议将输入收集为两个不同的数字。

MonthDay md = MonthDay.of( x , y ) ;

如果您坚持,您可以将输入收集为组合字符串和 parse 。如果是这样,我建议您和您的用户使用标准 ISO 8601格式:--MM-DD.

MonthDay md = MonthDay.parse( "--12-31" ) ;

或者使用 DateTimeFormatter 定义模式.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM.dd" ) ;
MonthDay md = MonthDay.parse( input , f ) ;

DateTimeParseException 的陷阱检测无效输入。

String input = "13.10" ;  // Invalid input. Month must be 1-12.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM.dd" ) ;
MonthDay md = null ;
try
{
md = MonthDay.parse( input , f ) ;
} catch ( DateTimeParseException e ) {
// … handle error …
System.out.println( "Invalid input: " + input ) ;
}

查看此code run live at IdeOne.com .

Invalid input: 13.10

e: java.time.format.DateTimeParseException: Text '13.10' could not be parsed: Unable to obtain MonthDay from TemporalAccessor: {MonthOfYear=13, DayOfMonth=10},ISO of type java.time.format.Parsed

md.toString(): null

关于Java 8 格式化日期输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614846/

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