#navi(../)
* 時間や日時を指定した書式に整形する・strftime [#p18442dc]
strftimeを使用すると指定した書式に時間や日付を整形し文字列に変換します。~
以下にstrftimeのCサンプルコードと実行例を記します。
#contents
#htmlinsertpcsp(c-top.html,c-sp.html)
*関連記事 [#ba010357]
-[[時間や日時を書式に従って整形する・strftime>日時/時間や日時を書式に従って整形する・strftime]]
-[[曜日を取得するCサンプルコード>日時/曜日を取得するCサンプルコード]]
-[[UNIX時間(time_t)を取得する・time>日時/UNIX時間(time_t)を取得する・time]]
-[[UNIX時間(time_t)を文字列の日時に変換する・time, localtime>日時/UNIX時間(time_t)を文字列の日時に変換する・time, localtime]]
-[[世界協定時(UTC)を取得する・gmtime>日時/世界協定時(UTC)を取得する・gmtime]]
* strftimeの書式 [#u862acfe]
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サンプルコード [#g849d9b8]
以下にstrftimeのCサンプルコードと実行例を記します。~
&ref(strftime.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の日時整形書式 [#sc7b362b]
strftimeの3番目の引数である整形書式について以下に記します。~
よく使うものをピックアップしました。~
詳細はman strftime などで調べてみてください。
|%y|西暦の下2桁の年(yy)|
|%Y|西暦(yyyy)|
|%m|月(01~12)|
|%d|10進数で月の日(01~31)|
|%e|10進数で月の日(1~31)1桁の場合は先頭が空白文字|
|%H|24時間制の時間を表す10進数(00~23)|
|%I|12時間制の時間を表す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)|
|%z|UTCからの時差|
|%Z|タイムゾーンの名前|
以上、strftimeに関するCサンプルコードでした。
#htmlinsertpcsp(c-btm.html,c-sp.html)