2012-05-29 4 views
7

나는 grails 프로젝트에서 일하고있다. 내 응용 프로그램에서 검도 그리드를 사용하고 있습니다. "startTime 및 endTime의 두 시간 필드를 포함하는"StatTimings "라는 도메인 클래스를 만들어야합니다. 나는 두 가지 변수에 대해 "날짜"데이터 형식을 사용할 수 없습니다. 시간 형식은 hh : mm입니다. 이것에 대한 플러그인을 설치하고 싶지 않습니다. 이 내 도메인은 지금이다 :시간 필드 grails 도메인 클래스에서

class StatTimings{ 

???? startTime 
???? endTime 
Date date 
AutoPosting autoPosting 
Status status 

static constraints = { 
} 

enum Status{ACTIVE,INACTIVE} 
enum AutoPosting{SERVICE_CHARGE,STAT_CHARGES,BOTH} 

}

이 난 단지 시간을 받아 내 필드를 만들 수있는 방법이 있나요?

답변

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); 
} 

그래서 난 당신이 동적으로 추가 할 수 있다고 생각 메소드를 부트 스트랩의 Date 클래스에 추가하고 필요할 때 호출하십시오.

전체 소스는 here입니다.

2

날짜를 사용하고 getStartTime() 방법으로 SimpleDateFormat의 도움으로 필요한 형식으로 변환 할 수 있습니다. 이렇게하면 날짜 부분을 무시합니다.

class StatTimings { 
    ... 

    def getStartTime() { 
     return new SimpleDateFormat("hh:mm").format(this.startTime); 
    } 

} 
3

내가 두 개의 정수 필드와 각 시간을 나타내는 것, 쉽게이 클래스의 인스턴스를 유지하고 (HTTP PARAMS)에서 결합 할 수 있도록하고 getStartTime()getEndTime() 같은 일부 도우미 메서드를 추가합니다. 시작 시간과 종료 시간의 차이를 계산하는 것과 같은 작업을 수행해야하는 경우 String 대신 오늘 Date (오늘 날짜 부분을 오늘으로 설정 함)을 반환하도록 헬퍼를 변경할 수 있습니다.

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 
    } 
} 
관련 문제