這裏有一些功能,我使用:
typedef int64_t timestamp_t;
timestamp_t currentTimestamp(void)
{
struct timeval tv;
struct timezone tz;
timestamp_t timestamp = 0;
struct tm when;
timestamp_t localeOffset = 0;
{ // add localtime to UTC
localtime_r ((time_t*)×tamp, &when);
localeOffset = when.tm_gmtoff * 1000;
}
gettimeofday (&tv, &tz);
timestamp = ((timestamp_t)((tv.tv_sec) * 1000)) + ((timestamp_t)((tv.tv_usec)/1000));
timestamp+=localeOffset;
return timestamp;
}
/* ----------------------------------------------------------------------------- */
int32_t timestampToStructtm (timestamp_t timestamp, struct tm* dateStruct)
{
timestamp /= 1000; // required timestamp in seconds!
//localtime_r (×tamp, dateStruct);
gmtime_r (×tamp, dateStruct);
return 0;
}
/* ----------------------------------------------------------------------------- */
int32_t sprintf_timestampAsYYYYMMDDHHMMSS (char* buf, timestamp_t timestamp)
{
int year = 0;
int month = 0;
int day = 0;
int hour = 0;
int minute = 0;
int second = 0;
struct tm timeStruct;
if (timestamp==TIMESTAMP_NULL) {
return sprintf(buf, "NULL_TIMESTAMP");
}
memset (&timeStruct, 0, sizeof (struct tm));
timestampToStructtm(timestamp, &timeStruct);
year = timeStruct.tm_year + 1900;
month = timeStruct.tm_mon + 1;
day = timeStruct.tm_mday;
hour = timeStruct.tm_hour;
minute = timeStruct.tm_min;
second = timeStruct.tm_sec;
return sprintf(buf, "%04d%02d%02d%02d%02d%02d", year, month, day, hour, minute, second);
}
你會發現你的文檔中需要:http://en.cppreference.com/w/c/chrono – Nim 2013-04-23 08:25:50
看到這個答案可能幫助http://stackoverflow.com/questions/8304259/formatting-struct-timespec/14746954#14746954 – MOHAMED 2013-04-23 08:44:46
st_birthtime和st_ctime的類型是timespec – MOHAMED 2013-04-23 08:46:02