tb_bool_t tb_localtime(tb_time_t time, tb_tm_t* tm) { #ifdef TB_CONFIG_LIBC_HAVE_LOCALTIME // localtime time_t t = (time_t)time; struct tm* ptm = localtime(&t); if (ptm && tm) { tm->second = ptm->tm_sec; tm->minute = ptm->tm_min; tm->hour = ptm->tm_hour; tm->mday = ptm->tm_mday; tm->month = ptm->tm_mon + 1; tm->year = ptm->tm_year + 1900; tm->week = ptm->tm_wday; tm->yday = ptm->tm_yday; tm->isdst = ptm->tm_isdst; } // ok? return ptm? tb_true : tb_false; #else // GMT+8 for beijing.china. time += 8 * 3600; return tb_gmtime(time, tm); #endif }
/* ////////////////////////////////////////////////////////////////////////////////////// * main */ tb_int_t tb_demo_libc_time_main(tb_int_t argc, tb_char_t** argv) { // time tb_time_t now = tb_time(); // the local time tb_tm_t lt = {0}; if (tb_localtime(now, <)) { tb_trace_i("LMT: %04ld-%02ld-%02ld %02ld:%02ld:%02ld, week: %d, time: %lld ?= %lld" , lt.year , lt.month , lt.mday , lt.hour , lt.minute , lt.second , lt.week , tb_mktime(<) , now); } // the gmt time tb_tm_t gt = {0}; if (tb_gmtime(now, >)) { tb_trace_i("GMT: %04ld-%02ld-%02ld %02ld:%02ld:%02ld, week: %d, time: %lld ?= %lld" , gt.year , gt.month , gt.mday , gt.hour , gt.minute , gt.second , gt.week , tb_gmmktime(>) , now); } return 0; }