このエントリーをはてなブックマークに追加


時間や日時を指定した書式に整形する・strftime

strftimeを使用すると指定した書式に時間や日付を整形し文字列に変換します。
以下にstrftimeのCサンプルコードと実行例を記します。


スポンサーリンク

関連記事

strftimeの書式

strftimeの書式は以下の通りです。

  • 必要なインクルードファイル
    #include <time.h>
  • 書式
    size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
  • 戻り値
    戻り値はバッファに書き込んだ文字数を返却します。
    エラーの場合は0が返却されます。
  • 引数
    1つ目: 書き込み用バッファのポインタ(整形した日時を書き込むバッファ)
    2つ目: 書き込み用バッファのサイズ
    3つ目: 整形する書式を設定します。
    4つ目: 日時情報の構造体のポインタを指定します。

strftimeのCサンプルコード

以下にstrftimeのCサンプルコードと実行例を記します。
filestrftime.c (改行コードLF)

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

int main(void)
{
    char s[256] = {'\0'};
    time_t t;
    struct tm *ptm;

    t = time(NULL);
    ptm = localtime(&t);
    strftime(s, sizeof(s), "%Y/%m/%d %H:%M:%S", ptm);

    printf("%s\n", s);

    return 0;
}

上記の例は、現在の日時を取得しstrftimeでYYYY/MM/DD HH:MI:SSに整形して表示sています。
以下、実際にコンパイルし実行したときの出力です。

$ gcc strftime.c -o strftime
$ ./strftime 
2014/07/25 14:01:32

strftimeの日時整形書式

strftimeの3番目の引数である整形書式について以下に記します。
よく使うものをピックアップしました。
詳細はman strftime などで調べてみてください。

%y西暦の下2桁の年(yy)
%Y西暦(yyyy)
%m月(01~12)
%d10進数で月の日(01~31)
%e10進数で月の日(1~31)1桁の場合は先頭が空白文字
%H24時間制の時間を表す10進数(00~23)
%I12時間制の時間を表す10進数(01~12)
%M分(00~59)
%S秒(00~60)
%D"%m/%d/%y"と等価な日付表現
%F"%Y-%m-%d"と等価な日付表現
%T"%H:%M:%S"に等価な時刻表現
%u暦週の中の日の序数(1~7)月曜日は1
%j年間通した日(001~366)
%zUTCからの時差
%Zタイムゾーンの名前

以上、strftimeに関するCサンプルコードでした。


スポンサーリンク

添付ファイル: filestrftime.c 495件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 21:01:00