【发布时间】:2015-07-07 19:01:57
【问题描述】:
我有一个带日期的复合主键。
id composite: ["division", "expenseDate"]
String division
Date expenseDate
def getPK() {
["division":division, "expenseDate":expenseDate]
}
我正在生成这样的页面链接。
<g:link controller="recoveryDetail" action="edit" params="${it.getPK()}">
<g:formatDate format="MM/dd/yyyy" date="${it.expenseDate}" />
</g:link>
我最终得到一个像这样生成的 URL
http://localhost:8080/pisr/recoveryDetail/edit?division=BUFFALO&expenseDate=2007-04-25+00%3A00%3A00.0
我想消除出现在 URL 中的时间。
我还发现很难将对象与来自数据库的日期时间为零的事实进行比较,但我的本地对象具有本地时间。示例“部门”:“BUFFALO”,“expenseDate”:“2015-07-07T04:00:00Z”。如何返回零时间而不是本地时间。
最后,我使用了 grails datePicker 组件,当我收到带有参数的日期时,我得到了expenseDate_day:7, expenseDate_year:2015, expenseDate_month:7。如何将这些转换回 groovy 中的日期对象,以便可以对日期执行以下查询?
RecoveryDetail.createCriteria().get {
eq("division", recoverySetupInstance.division)
eq("expenseDate", expenseDate)
}
【问题讨论】:
-
您的第一个问题与日期格式有关,您可以使用 formatDate 或 simpleDateFormat 将日期格式化为 dd-mm-yyyy 或任何您想要的格式。 grails.github.io/grails-doc/latest/ref/Tags/formatDate.html。那是gsps。在控制器中,您可以执行 g.formatDate(format:"yyyy-MM-dd" date:"${date}")。第二个问题是一样的 - 只需使用对象在另一边做一个日期。
-
@vahid 在控制器中用于什么标签 formatDate?您在 Date 对象中有一个漂亮的方法:格式(字符串格式)。所以改为 g.formatDate(format:"yyyy-MM-dd" date:"${date}") 你可以只写: date.format("yyyy-MM-dd")