C
Excel
Ideone
ISO8601
#migrated

C | datetime > ideoneのCで出力したUNIX timeをExcel上でyyyy/mm/dd hh:nn形式にする

http://ideone.com/VfZWIV

#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でなく)。

2017-08-02_18h46_29.png

UTCの時刻でなくJSTの時刻になる。

ideoneのロケールでずれが起きているのだろうか(詳細は追わない)。