時間、分、日、秒、月、年などを知っている特定の瞬間があるとします。このエポック時間 (1970 年からの秒数) を変換するにはどうすればよいですか?
Boost を使用できないため、Boost ソリューションを提案しないでください。
機能を使用してくださいmktime(3)
。例えば:
struct tm t = {0}; // Initalize to all 0's
t.tm_year = 112; // This is year-1900, so 112 = 2012
t.tm_mon = 8;
t.tm_mday = 15;
t.tm_hour = 21;
t.tm_min = 54;
t.tm_sec = 13;
time_t timeSinceEpoch = mktime(&t);
// Result: 1347764053
Linux では、timegm を使用してローカル タイム ゾーンが減算されないようにします。
struct tm tm;
// set tm.tm_year, tm.tm_mon, tm.tm_mday, tm.tm_hour, tm.tm_min and tm.tm_sec
tm.tm_year -= 1900; // year start at 1900
tm.tm_mon--; // months start at january
TIME_STAMP t = timegm(&tm);
mktime()
struct tm
エポックからの秒数に変換できます。