mktime()でおかしな値でもよいので日付を突っ込んで、秒数にして(ここで補正がかかっている)、localtimeで日付を取り出します。
ということですね。
// for Linux #include#include int main(int argc, const char** argv) { if (6 != argc) { printf("年 月 日 時 分\n"); printf("USAGE: %s 2009 11 2 13 58\n", argv[0]); return 0; } time_t timer; struct tm t; struct tm *t_st; int year, month, day, hour, min; char *endptr; year = strtol(argv[1], &endptr, 10); month = strtol(argv[2], &endptr, 10); day = strtol(argv[3], &endptr, 10); hour = strtol(argv[4], &endptr, 10); min = strtol(argv[5], &endptr, 10); printf("%d/%d/%d %d:%d\n", year, month, day, hour, min); t.tm_year = year - 1900; /* 2001年 */ t.tm_mon = month - 1; /* 5月 */ t.tm_mday = day; /* 20日 */ // t.tm_wday = 0; /* 日曜日 */ t.tm_hour = hour; /* 14時 */ t.tm_min = min; /* 20分 */ t.tm_sec = 0; /* 00秒 */ t.tm_isdst= -1; /* 夏時間無効 */ /* 構造体を時刻に変換 */ timer = mktime(&t); printf("時刻 : %ld\n",timer); /* 再変換して確認 */ t_st = localtime(&timer); printf("年 : %d\n",t_st->tm_year+1900); printf("月 : %d\n",t_st->tm_mon+1); printf("日 : %d\n",t_st->tm_mday); //printf("曜日: %d\n",t_st->tm_wday); printf("時 : %d\n",t_st->tm_hour); printf("分 : %d\n",t_st->tm_min); printf("秒 : %d\n",t_st->tm_sec); return 0; }
0 件のコメント:
コメントを投稿