gpt4 book ai didi

validation - 日期值: when entered 00/00/0000 saves as 11/30/0002

转载 作者:行者123 更新时间:2023-12-03 12:38:30 30 4
gpt4 key购买 nike

当我在网页中的日期范围过滤器(截止日期)中输入00/00/0000时,它将另存为11/30/0002。

我正在尝试使用setLenient(false)但没有运气。这是代码的一部分。希望能帮助到你。我包括的网页代码包含了支持bean的值和代码。

XHTML页面代码:

<h:panelGroup layout="block" styleClass="myWorkDate">
<h:commandLink action="#{myFollowupBean.startRangeFilter}" id="lnkDateRange" value="#{myFollowupBean.rangeFilter.display}" />
</h:panelGroup>

MyFollowUpBean.java:Bean文件

支持bean中的代码。弹出对话框以显示日期范围过滤器。
当我输入零时,它将另存为11/30/0002并处理请求,而不是给出错误
RangeFilterVO-日期的模型类
 public void startRangeFilter() {
Command saveCommand = new Command() {

@Override
public String execute(Object returnObject) {
RangeFilterVO vo = (RangeFilterVO)returnObject;
rangeFilter.setFromDate(vo.getFromDate());
rangeFilter.setToDate(vo.getToDate());
searchAll();
fetch();

return null;
}
};

CalendarRangeFilterDialog dialog = new CalendarRangeFilterDialog();

dialog.setWidth(300);
try {
RangeFilterVO param = (RangeFilterVO) BeanUtils
.cloneBean(rangeFilter);
dialog.setVo(param);

} catch (IllegalAccessException | InstantiationException
| InvocationTargetException | NoSuchMethodException e) {
}
DialogFrame.displayDialog(dialog, saveCommand);

}


DateTimeConverter.java:

public static String getDatePattern(){
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, FacesUtils.getLocale());
String datePattern = ((SimpleDateFormat) dateFormat).toPattern();
Date myDate;
try {
if(myDate == dateFormat.parse(datePattern)){
if (datePattern.indexOf("MM") == -1){
datePattern = StringUtils.replace(datePattern, "M", "MM");
}
if (datePattern.indexOf("dd") == -1){
datePattern = StringUtils.replace(datePattern, "d", "dd");
}
if (datePattern.indexOf("yyyy") == -1){
datePattern = StringUtils.replace(datePattern, "yy", "yyyy");
}
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return datePattern;
}

有人可以向我解释一下吗?

最佳答案

这是将零放入基于1的字段中的人工产物。它会自动校正到上一个单元的末尾。

在通常的时代,传统上没有“0年”。 1 AD/CE之前的年份是1 BC/BCE。因此,您输入的年份0000变为1 BCE。

然后,公元前1年的“第0个月”变为上一年的最后一个月:公元前12月12日。

同样,12月的“第0天”成为上个月的最后一天:11月30日。

因此,00/00/0000被更正为公元前2年11月30日。您的格式没有用于该时代的字段,因此您的显示内容丢失了它是结果“11/30/0002”中的BCE年份的事实。

如果您希望解析器拒绝超出其正常范围的值,则只需在调用dateFormat.setLenient(false)之前先调用dateFormat.parse()即可;建议解析器在给定此类日期时将引发异常。

关于validation - 日期值: when entered 00/00/0000 saves as 11/30/0002,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22307641/

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