当前位置: 首页 > 知识库问答 >
问题:

防止Grails 2.4.4接受无效日期

越俊艾
2023-03-14

共有1个答案

上官鸿祯
2023-03-14

假设Grails使用DateFormat解析日期字符串,问题是它使用的是宽松的日历。例如,将lenient设置为true(默认值),结果如下所述:

import java.text.SimpleDateFormat

def sdf = new SimpleDateFormat('MM/dd/y')
assert sdf.parse('02/31/2015').toString() == 'Tue Mar 03 00:00:00 EST 2015'

但是,如果将其更改为false,则会在相同的日期出现异常:

sdf.lenient = false

try {
    sdf.parse('02/31/2015').toString() == 'Tue Mar 03 00:00:00 EST 2015'
} catch (java.text.ParseException ex) {
    // java.text.ParseException: Unparseable date: "02/31/2015"
    println 'Oops'
}

因此,要在控制器中处理此验证,您可以

    null
 类似资料:
  • 我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入一个无效的日期时,打印语句会给我奇怪的输出。 当是时,它打印

  • 我想验证用户输入的日期是否有效,格式是否正确。我使用这个块来检查用户的输入,但是当我输入无效日期时,print语句会给我奇怪的输出。 当是时,它打印

  • 尝试1 将函数绑定到KeyPress/KeyDown事件。 我有一个regex可以在输入日期时验证日期(例如,它允许“12”但不允许“13”表示月份)。 看起来都不错。但是...编辑时开始显示一些奇怪的结果 假设输入为“10/21/1999” 他们想把月份改成“12”。 所以他们把光标放在“0”后面,然后点击退格键, 值现在为“12/11/999”并且无效,阻止输入 或者,他们只是突出显示“0”,

  • 问题内容: 我遇到的问题是PrimesFaces 3.4.1日历。当使用通过按钮或在输入字段焦点上激活的弹出日期选择器时,您只能选择有效的日期,该日期很好,很开心! 当您在输入字段中手动添加日期时,就会出现问题,如果您添加了无效日期,PrimeFaces日历组件会尽最大的努力将其转换为有效日期然后发送,这意味着后端验证是不可行的。以下是一些有趣的翻译: 30/02/2012变成2/6/2014 3

  • 我有一个java代码,以特定的格式输入日期。 现在我输入的是无效日期。但它返回的日期是2016年1月14日星期四18:31:30。为什么会这样?如何使其返回null作为日期?