2016-05-13 57 views
1

我试图格式化Grails的一个Date日期格式,这里是我的控制器代码:输出错误的Grails中

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
empRefInstance.startDate=sdf.parse(params.startDate) 
empRefInstance.endDate=sdf.parse(params.endDate) 
println ("dates " + empRefInstance.startDate +" "+empRefInstance.endDate) 

应该是01-05-2016按照我定义的格式,但输出这两种日期格式的输出

Sun May 01 00:00:00 EEST 2016 

formater有什么问题吗?

+0

你是如何得到该输出?你没有在你的问题中包括这个。 –

+0

@JoshuaMoore我编辑了问题 – Sherif

+0

假设'startDate'和'endDate'都是'Date'数据类型吗?如果是这样的话,那么这是预期的默认行为,以便在未格式化时输出“日期”。如果你想以特定格式显示,你可以使用'.format()'方法。像这样:'empRefInstance.startDate.format('dd-MM-yyyy')' –

回答

0

您不是格式化输出,而是只解析。

格式化:转换的DateString(该format法)
解析:转换的StringDate(该parse法)

格式化,你需要做的像这个:

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
// First you are converting the incoming date string to a date 
empRefInstance.startDate = sdf.parse(params.startDate) 
empRefInstance.endDate=sdf.parse(params.endDate) 

// Now we have to conert the date object to string and print it 
println ("dates " + sdf.format(empRefInstance.startDate) + " "+sdf.format(empRefInstance.endDate)) 

当您打印在Groovy/Java的一个Date对象,它是toString()默认的实现将被调用,因此你喜欢Sun May 01 00:00:00 EEST 2016

也越来越输出,Groovy中增加了在Dateformat方法直接允许格式。你甚至可以使用它。

println("dates " + empRefInstance.startDate.format("dd-MM-yyyy") + " " + empRefInstance.endDate.format("dd-MM-yyyy")) 
0

格式化程序没有任何问题。你没有使用输出。这样的事情会给你预期的输出:

println empRefInstance.startDate.format('dd-MM-yyyy')

+0

当我尝试'empRefInstance.startDate = sdf.format(sdf.parse(params.startDate))''我'无法投射物体'01 -05-2016'与班级'java.lang.String'到班'java.util.Date'' – Sherif

+0

这是因为你正在试图设置一个'日期'为'String'的值。这是毫无意义的。你想通过这样做完成什么?你的问题是关于如何得到一个日期格式输出正确,但你的评论是处理设置(输入)。 –

+0

我想要做的是我得到日期startDate和endDate在我的域名,并从视图中返回这些字段是字符串,所以我想将字符串转换为日期并将其设置为'empRefInstance.starDate'与格式'dd-MM-yyyy' – Sherif