void Convert_mysql_timestamp_to_time_t(MYSQL_TIME *ts, time_t *ttDate){
if (!*(char *)(ts)) {
*ttDate = 0;
return; }
gmtime (ttDate);
tm *a_tm_struct = localtime (ttDate);
a_tm_struct->tm_year = ts->year - 1900;
a_tm_struct->tm_mon = ts->month - 1;
a_tm_struct->tm_mday = ts->day;
a_tm_struct->tm_hour = ts->hour;
a_tm_struct->tm_min = ts->minute;
a_tm_struct->tm_sec = ts->second;
*ttDate = mktime(a_tm_struct);}
void Convert_time_t_to_mysql_timestamp(time_t *ttDate, MYSQL_TIME *ts){
if (!*ttDate) { memset(ts, 0, sizeof(MYSQL_TIME));
return; } struct tm *a_tm_struct = gmtime(ttDate);
ts->year = a_tm_struct->tm_year + 1900;
ts->month = a_tm_struct->tm_mon + 1;
ts->day = a_tm_struct->tm_mday;
ts->hour = a_tm_struct->tm_hour;
ts->minute = a_tm_struct->tm_min;
ts->second = a_tm_struct->tm_sec;
if (!*(char *)(ts)) {
*ttDate = 0;
return; }
gmtime (ttDate);
tm *a_tm_struct = localtime (ttDate);
a_tm_struct->tm_year = ts->year - 1900;
a_tm_struct->tm_mon = ts->month - 1;
a_tm_struct->tm_mday = ts->day;
a_tm_struct->tm_hour = ts->hour;
a_tm_struct->tm_min = ts->minute;
a_tm_struct->tm_sec = ts->second;
*ttDate = mktime(a_tm_struct);}
void Convert_time_t_to_mysql_timestamp(time_t *ttDate, MYSQL_TIME *ts){
if (!*ttDate) { memset(ts, 0, sizeof(MYSQL_TIME));
return; } struct tm *a_tm_struct = gmtime(ttDate);
ts->year = a_tm_struct->tm_year + 1900;
ts->month = a_tm_struct->tm_mon + 1;
ts->day = a_tm_struct->tm_mday;
ts->hour = a_tm_struct->tm_hour;
ts->minute = a_tm_struct->tm_min;
ts->second = a_tm_struct->tm_sec;
}
void get_wtime(const char *timestr,time_t *timedigit) { struct tm worktm; int ret; bzero(&worktm,sizeof(worktm)); if (timestr == NULL) return; if ((ret =sscanf(timestr,"%d-%d-%d/%d:%d:%d", &worktm.tm_year,&worktm.tm_mon,&worktm.tm_mday, &worktm.tm_hour,&worktm.tm_min,&worktm.tm_sec)) != 6) return; worktm.tm_year -= 1900; if ( worktm.tm_mon ) worktm.tm_mon -= 1; if ((*timedigit = mktime(&worktm)) == -1) return; return; } |
摘自:http://www.gamedev.net/topic/399702-tm-to-time_t/