2012-05-29 12 views
7

私はgrailsプロジェクトで作業しています。私のアプリケーションでは剣道グリッドを使っています。私は2つの時間フィールドstartTimeとendTimeを含む "StatTimings"という名前のドメインクラスを作成する必要があります。私はこれらの2つの変数のための "日付"データ型を使用することはできません私が必要とする時間形式は、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

は、私は2つの整数フィールドとして各時間を表したい、それが簡単に、このクラスのインスタンスを保持し、(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 
    } 
} 
関連する問題