😸

[C] mktime 関数

に公開

機能

指定した日時の struct tm を、UNIX時刻(1970年1月1日からの秒数)に変換する[1]

使用例

1970-01-01 00:00:00 のUNIX時刻を表示する

\n は改行を表す エスケープシーケンス[2]

コード

struct tm t = {0};
t.tm_year = 70;  // 1970年(1900年からの年数)
t.tm_mon  = 0;   // 1月(0=1月)
t.tm_mday = 1;   // 1日
t.tm_hour = 0;
t.tm_min  = 0;
t.tm_sec  = 0;
time_t unix_time = mktime(&t);
printf("%ld\n", unix_time);
全文
#include <stdio.h>
#include <time.h>

void main() {
    struct tm t = {0};
    t.tm_year = 70;  // 1970年
    t.tm_mon  = 0;   // 1月
    t.tm_mday = 1;   // 1日
    t.tm_hour = 0;
    t.tm_min  = 0;
    t.tm_sec  = 0;
    time_t unix_time = mktime(&t);
    printf("%ld\n", unix_time);
}

実行結果

0

2023-12-31 23:59:59 を変数から表示する

コード

struct tm t = {0};
t.tm_year = 123;  // 2023年
t.tm_mon  = 11;   // 12月
t.tm_mday = 31;
t.tm_hour = 23;
t.tm_min  = 59;
t.tm_sec  = 59;
time_t unix_time = mktime(&t);
printf("%ld\n", unix_time);
全文
#include <stdio.h>
#include <time.h>

void main() {
    struct tm t = {0};
    t.tm_year = 123;  // 2023年
    t.tm_mon  = 11;   // 12月
    t.tm_mday = 31;
    t.tm_hour = 23;
    t.tm_min  = 59;
    t.tm_sec  = 59;
    time_t unix_time = mktime(&t);
    printf("%ld\n", unix_time);
}

実行結果

1704044399
脚注
  1. struct tm の値が不正でも自動的に補正する。日本で使う場合はタイムゾーン(標準時)の影響がある。 ↩︎

  2. 改行やタブなど、画面に表示されない制御文字のこと。 ↩︎

Discussion