2012년 9월 13일 목요일

C#과 FarPointSpread를 이용하여 "HH:mm" 형식으로 시간출력

Spread 상에는 "HH:mm" 형식으로 출력되고 DB에는 char(4) - HHmm 형식으로 저장시키기 위해 다음과 같이 처리했다.


private DateTime SetCheckTime(string time)
{
    int hour = int.Parse(time.Substring(0, 2));
    int minute = int.Parse(time.Substring(2, 2));
    DateTime retv = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, hour, minute, 0);
    return retv;
}

time은 "1234", "1212" 같은 문자열 이다.

Substring 을 이용하여 시와 분을 분리하고 int.Parse를 이용하여 각각 hour, minute 변수에 데이터를 넣는다.

그리고 DateTime 형식의 변수에 저장한다.



FarPointSpread에서는 다음과 같은 구현된다.

FarPoint.Win.Spread.CellType.DateTimeCellType dateTimeCellType6 = new FarPoint.Win.Spread.CellType.DateTimeCellType();
...

dateTimeCellType6.CalendarSurroundingDaysColor = System.Drawing.SystemColors.GrayText;
dateTimeCellType6.DateDefault = new System.DateTime(2012, 8, 30, 21, 58, 41, 0);
dateTimeCellType6.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined;
dateTimeCellType6.MaximumTime = System.TimeSpan.Parse("23:59:59.9999999");
dateTimeCellType6.TimeDefault = new System.DateTime(2012, 8, 30, 21, 58, 41, 0);
dateTimeCellType6.UserDefinedFormat = "HH:mm";
this.fpSpread1_Sheet1.Columns.Get(9).CellType = dateTimeCellType6;

CalendarSurroundingDaysColor, DateDefault  는 왜 포함되는지 잘 모르겠다;

나머지 코드는 차근차근보면 어떤 의미인지 알 듯하다.

이런식으로 처리해 놓고 해당 cell에 DateTime을 입력하면 "12:34", "12:12" 형식으로 출력된다.



Spread 상에 출력되어 있는 시간을 문자열로 받아들이기 위해 다음과 같이 처리했다.

data._checkTime = (((DateTime)_ActiveSheet.GetValue(i, COL_CHK_TIME)).Hour).ToString().PadLeft(2, '0') + (((DateTime)_ActiveSheet.GetValue(i, COL_CHK_TIME)).Minute).ToString().PadLeft(2, '0');

시간과 분을 나누어서 string으로 만들고 두 string을 붙인다.

각 string은 PadLeft 함수를 사용하여 "03", "05" 형식으로 만든다.



댓글 없음:

댓글 쓰기