LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-08-02

#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のロケールでずれが起きているのだろうか(詳細は追わない)。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0