|
게시판에 질문으로 도배를 해서 죄송합니다.
빌더 5.0에서 두가지 질문입니다.
1. 빌더에서 TDate(년도,월,일)로 생성하니 에러가 납니다. 추적에 들어가보면 TDate dDate(1998,1,1)로 생성하면 vcl소스에서 보면 년도,월,일 등에 전부 쓰레기 값이 들어가 있더군요. 원래 이런건지..
그래서 TDate dDate = StrToDate(IntToStr(tmt->tm_year + 1900)+"-"+IntToStr(tmt->tm_mon+1)+"-"+IntToStr(tmt->tm_mday)); 이렇게 생성합니다.
2. 제가 Mysql DB하나로 gcc,php,vc++,builder등에서 제각기 Access해야 하므로 날짜와 시간을 Unix의 time_t값으로 저장해서 사용합니다. 물론 DB에서 제공하는 기본 Date형을 사용할 수도 있지만 그렇게 되면 gcc에서 이 값을 가지고 연산, 처리하는게 좀 복잡해서요. -- 할줄 몰라서 그럴수도 --
TDateTime 형에서 time_t형으로 바로 변환해 주는건 없는지요? 아무리 뒤져봐도 없어서 아래와 같이 사용합니다.
// time_t의 값을 TDateTime형으로 변환
TDateTime time_tToDate(time_t CvtTime)
{
struct tm *tmt = localtime(&CvtTime);
if(CvtTime <= 0) return TDateTime();
TDate dDate = StrToDate(IntToStr(tmt->tm_year + 1900)+"-"+IntToStr(tmt->tm_mon+1)+"-"+IntToStr(tmt->tm_mday));
return dDate;
}
// TDateTime형을 time_t형으로 변환
time_t DateTotime_t(TDateTime nDate )
{
Word nYear,nMon,nDay,nHour = 0,nMin = 0,nSec = 0,nmSec = 0;
struct tm tmt;
DecodeDate(nDate,nYear,nMon,nDay);
DecodeTime(nDate,nHour,nMin,nSec,nmSec);
tmt.tm_year = nYear - 1900;
tmt.tm_mon = nMon - 1;
tmt.tm_mday = nDay;
tmt.tm_hour = nHour;
tmt.tm_min = nMin;
tmt.tm_sec = nSec;
tmt.tm_wday = nDate.DayOfWeek() - 1;
tmt.tm_isdst = 0;
return mktime(&tmt);
}
|