我在上一个问题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"
答案 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"
这意味着您必须拆分输入字段。
这就是我解决这个问题的方法。