리얼그리드에서 사용하는 데이터 형은 자바스크립트를 기본으로 사용하고 있습니다. 그렇기 때문에 필드의 dataType이 “datetime”인 필드의 값을 가져오게되면 자바스크립트의 Date 객체값으로 반환됩니다.

이 경우 실제 업무에 사용하기에 불편한 점이 있을 수도 있습니다. 이 경우 아래와 같이 dataProvider.getOutputRow(), getOutputRows()를 사용하면 원하는 Format으로 출력할 수 있습니다.

var rowData = dataProvider.getOutputRow({datetimeFormat: "yyyyMMdd"}, 10);

그러나 하나의 그리드에서 사용하는 datetime 필드가 여러개이고 각 필드에 적용된 datetime format이 여러개 인 경우는 위의 방법이 해결책이 될 수 없습니다. 이런 경우는 아래와 같이 사용하시면 됩니다.

// javascript datetimeFormat
Date.prototype.format = function(f) {
    if (!this.valueOf()) return " ";

    var weekName = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
    var d = this;

    return f.replace(/(yyyy|yy|MM|dd|E|hh|mm|ss|a\/p)/gi, function($1) {
        switch ($1) {
            case "yyyy": return d.getFullYear();
            case "yy": return (d.getFullYear() % 1000).zf(2);
            case "MM": return (d.getMonth() + 1).zf(2);
            case "dd": return d.getDate().zf(2);
            case "E": return weekName[d.getDay()];
            case "HH": return d.getHours().zf(2);
            case "hh": return ((h = d.getHours() % 12) ? h : 12).zf(2);
            case "mm": return d.getMinutes().zf(2);
            case "ss": return d.getSeconds().zf(2);
            case "a/p": return d.getHours() < 12 ? "am" : "pm";
            default: return $1;
        }
    });
};

String.prototype.string = function(len){var s = '', i = 0; while (i++ < len) { s += this; } return s;};
String.prototype.zf = function(len){return "0".string(len - this.length) + this;};
Number.prototype.zf = function(len){return this.toString().zf(len);};

dataProvider.getOutputRow({datetimeCallback:function(index, field, value){
    //필드 마다 다른 포맷 설정
    if(field == "field3"){
        return new Date(value).format('yyyy/MM/dd')
    }
    if(field == "field4"){
        return new Date(value).format('yyyyMMdd')
    }
}},0)

dataProvider.getOutputRow()의 경우 화면에 보이는 것과 다른 포맷으로 가져올 수 있는 장점이 있습니다.

그러나 다른 포맷이 필요하지 않고 화면에 보이는 포맷 그대로 가져오고 싶은 경우는 dataProvider.getOutputRow(), dataProvider.getOutputRows()를 사용하지 않고 아래의 gridView.getDisplayValues()를 사용하시면 됩니다.

var values = gridView.getDisplayValues(0);