我在grails项目中工作。我在我的应用程序中使用kendo网格。我需要创建一个名为“StatTimings”的域类,其中包含两个时间字段startTime和endTime。我不能使用“日期”数据类型为那两个变量因为我需要的时间格式是hh:mm。 我不想为此安装任何插件。 这是我现在的域名:
class StatTimings{
???? startTime
???? endTime
Date date
AutoPosting autoPosting
Status status
static constraints = {
}
enum Status{ACTIVE,INACTIVE}
enum AutoPosting{SERVICE_CHARGE,STAT_CHARGES,BOTH}
}
有什么方法可以让我的领域只接受时间吗?
答案 0 :(得分:3)
为了便于持久化和绑定(来自HTTP params)此类的实例,我每次都将其表示为两个整数字段,并添加一些辅助方法,如getStartTime()
和getEndTime()
。如果您需要执行诸如计算开始时间和结束时间之间差异的操作,您可能希望更改这些帮助程序以返回Date
而不是String
(其日期部分设置为今天)。
class StatTimings {
static transients = ['startTime', 'endTime']
Integer startHours
Integer startMins
Integer endHours
Integer endMins
private String formatTime(Integer hours, Integer mins) {
String formattedHours = hours < 10 ? "0$hours" : hours.toString()
String formattedMins = mins < 10 ? "0$mins" : mins.toString()
"$formattedHours:$formattedMins"
}
String getStartTime() {
formatTime(startHours, startMins)
}
String getEndTime() {
formatTime(endHours, endMins)
}
static constraints = {
startHours range: 0..23
endHours range: 0..23
startMins range: 0..59
endMins range: 0..59
// TODO: add a custom validator that checks the end time is after start time
}
}
答案 1 :(得分:2)
您可以使用日期并在getStartTime()
方法中将其转换为SimpleDateFormat
帮助所需的格式。这样就可以忽略它的日期部分。
class StatTimings {
...
def getStartTime() {
return new SimpleDateFormat("hh:mm").format(this.startTime);
}
}
答案 2 :(得分:1)
java.sql.Time类是java.util.Date的子类,它几乎完全相同,它添加了一个自定义toString实现,如下所示:
public String toString () {
int hour = super.getHours();
int minute = super.getMinutes();
int second = super.getSeconds();
String hourString;
String minuteString;
String secondString;
if (hour < 10) {
hourString = "0" + hour;
} else {
hourString = Integer.toString(hour);
}
if (minute < 10) {
minuteString = "0" + minute;
} else {
minuteString = Integer.toString(minute);
}
if (second < 10) {
secondString = "0" + second;
} else {
secondString = Integer.toString(second);
}
return (hourString + ":" + minuteString + ":" + secondString);
}
所以我猜你可以在bootstrap上动态地向Date类添加一个方法,并在需要时调用它。
您可以看到完整的来源here。