#include <stdio.h>
#include <time.h>
time_t getElapsedSecond(int yyyy, int mm, int dd, int hh, int nn, int ss){
struct tm workdt;
workdt.tm_isdst = -1; // summer time flag
workdt.tm_year = yyyy - 1900;
workdt.tm_mon = mm - 1;
workdt.tm_mday = dd;
workdt.tm_hour = hh;
workdt.tm_min = nn;
workdt.tm_sec = ss;
return mktime(&workdt);
}
int main(void) {
time_t tnow = getElapsedSecond(2017, 8, 2, 18, 29, 00);
printf("%ld\n", tnow);
return 0;
}
run
1501698540
上記の値をEXCELに貼り、EXCEL timeに変換する。
参考: http://www5d.biglobe.ne.jp/~noocyte/Programming/GregorianAndJulianCalendars.html#UnixTimeToExcelTime
協定世界時のシリアル値:ExcelTimeUTC = UnixTime / 86400 + 25569
日本標準時のシリアル値:ExcelTimeJST = (UnixTime + 32400) / 86400 + 25569
使ったのは「協定世界時のシリアル値」の式 (JSTでなく)。
UTCの時刻でなくJSTの時刻になる。
ideoneのロケールでずれが起きているのだろうか(詳細は追わない)。