解析日期不可解析

时间:2014-02-08 04:59:00

标签: date grails

我在上一个问题Grails input error: property must be a valid date

的答案中尝试了这个片段
class YourController {

static SimpleDateFormat sdf = new SimpleDateFormat( 'MM dd yyyy' )

def saveUser() {
    def userInstance = new User(params)

    Date dateOfBirth = sdf.parse( params.dateOfBirth ) <-------- this

    if (!userInstance.save(flush: true)) {
        render(view: "createUser", model: [userInstance: userInstance])
        return
    }

    flash.message = message(code: 'default.created.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])
    redirect(action: "showUser", id: userInstance.id)
}

我的字符串输出是1月dd yyyy,2月dd yyyy,3月dd yyyy等等。基本上它给出了完整的月份名称

现在,当我在输入

上尝试2000年1月1日这样的错误时,错误为Unparseable date: "January 01 2000"

2 个答案:

答案 0 :(得分:1)

这应该这样做:

 static SimpleDateFormat sdf = new SimpleDateFormat('MMM dd yyyy')

解释here

  

月:如果模式字母的数量为3或更多,则将月份解释为文本;否则,它被解释为数字。

答案 1 :(得分:0)

我有同样的问题。 我建议您在<g:datePicker> - 默认grails标记中查看其工作原理。 http://grails.github.io/grails-doc/3.0.x/ref/Tags/datePicker.html

<g:datePicker name="my_date" value="${new Date()}" precision="day"/>

它在分开的字段中将日期发送到服务器,如:

my_date="date.struct"
my_date_day="12"
my_date_month="7"
my_date_year="2015"

这意味着您必须拆分输入字段。

这就是我解决这个问题的方法。