strftimeを使用すると指定した書式に時間や日付を整形し文字列に変換します。
以下にstrftimeのCサンプルコードと実行例を記します。
strftimeの書式は以下の通りです。
#include <time.h>
size_t strftime(char *s, size_t max, const char *format, const struct tm *tm);
以下にstrftimeのCサンプルコードと実行例を記します。
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の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サンプルコードでした。