LoginSignup
0
2

More than 3 years have passed since last update.

時刻を扱うLinuxの標準ライブラリの関数についてのメモ

Last updated at Posted at 2019-05-19

CTIME(3)にある一部関数についての備忘録

使用する型と構造体

time_t型

unixtimeを入れる型。
私の環境では8バイトの整数型で実装されている模様。

tm構造体

struct tm {
    int tm_sec;    /* Seconds (0-60) */
    int tm_min;    /* Minutes (0-59) */
    int tm_hour;   /* Hours (0-23) */
    int tm_mday;   /* Day of the month (1-31) */
    int tm_mon;    /* Month (0-11) */
    int tm_year;   /* Year - 1900 */
    int tm_wday;   /* Day of the week (0-6, Sunday = 0) */
    int tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */
    int tm_isdst;  /* Daylight saving time */
};

使用する関数

char *ctime(const time_t *timep)

time_t型の値を受けとって、それに対応するローカルタイムの文字列表現を返す。

#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[]) {
    time_t now = time(NULL);
    printf("%s", ctime(&now));
}

出力

Sun May 19 20:23:47 2019

struct tm *gmtime(const time_t *timep)

time_t型の値を受け取って、それに対応するUTCのtm構造体のポインタを返す。

#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[]) {
    time_t now = time(NULL);
    struct tm *hoge = gmtime(&now);
    printf(
            "%d-%d-%d %d:%d:%d\n",
            hoge->tm_year+1900,
            hoge->tm_mon+1,
            hoge->tm_mday,
            hoge->tm_hour,
            hoge->tm_min,
            hoge->tm_sec
    );
}

出力

2019-5-19 14:39:29

struct tm *localtime(const time_t *timep)

time_t型の値を受け取って、それに対応するローカルタイムのtm構造体のポインタを返す。

#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[]) {
    time_t now = time(NULL);
    struct tm *hoge = localtime(&now);
    printf(
            "%d-%d-%d %d:%d:%d\n",
            hoge->tm_year+1900,
            hoge->tm_mon+1,
            hoge->tm_mday,
            hoge->tm_hour,
            hoge->tm_min,
            hoge->tm_sec
    );
}

出力

2019-5-19 23:45:2

char *asctime(const struct tm *tm)

tm構造体のポインタを受け取って、それに対応する時刻の文字列表現を返す。

#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[]) {
    time_t now = time(NULL);
    printf("%s", asctime(localtime(&now)));
}

出力

Sun May 19 20:23:47 2019

参考

CTIME(3)のmanページ

0
2
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
2