gpt4 book ai didi

java - 日期格式转换在 Java 中未按预期工作

转载 作者:行者123 更新时间:2023-12-01 15:08:16 25 4
gpt4 key购买 nike

这是一个众所周知的问题,已经出现在 stackoverflow 上。我被要求解决网络应用程序中的错误。我有一个来自网络表单的日期,用户应该以给定格式 dd/MM/yyyy 输入有效日期。

该应用程序使用Struts 1.3作为框架,这是我在相应FormBean的validate方法中找到的。

DateFormat dateFormat = new SimpleDateFormat( "dd/MM/yyyy", aLocale ); 
try{
mydate = dateFormat.parse( formDate );
}
catch( ParseException pe ){
errors.add( "error", new ActionError( "error.date.invalid" ) );
}

但是,例如,当用户以短格式输入年份(即 01/10/12)时,不会引发错误,该错误会转换为日期,在数据库中查找我发现 01/10/0012

作为快速修复,我尝试使用 setLenient(false),但仍然没有引发异常,并且 mydate 仍然会产生有效但错误的日期。

在搞乱正则表达式和字符串预解析之前,我想知道我是否遗漏了一些东西。特别是在日期格式实例化中使用区域设置时。

项目当前使用的Jdk是1.5

最佳答案

您可以使用如下格式模式:

DateFormat dateFormat = new SimpleDateFormat( "dd/MM/yy", aLocale ); 

因此它将把“01/11/12”转换为 2012 年 1 月 11 日,将“01/11/86”转换为 1986 年 1 月 11 日

如果年份采用“yyyy”格式,则无论位数如何,都会按字面解释年份。

欲了解更多详情,请阅读: http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#year

或者您可以使用 javascript/Java 代码处理“dd/mm/yyyy”格式的用户输入。限制用户只能输入“dd/mm/yyyy”格式的日期。

关于java - 日期格式转换在 Java 中未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12671647/

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