【C/C++】strftime()関数の使い方と主な書式指定子を解説
strftime()関数とは
C言語およびC++のstrftime()関数は、日付や時刻を指定した書式の文字列に整形(フォーマット)するための関数です。C言語では「time.h」ヘッダーファイル内で宣言されています。戻り値としては、文字列にコピーされた総文字数を返します。ただし、生成された文字列が引数sizeで指定したサイズに収まらない場合は0を返します。
構文
size_t strftime(char *string, size_t size, const char *format, const struct tm *time_pointer)
各パラメータの意味
- string:整形結果を格納する出力先配列へのポインタ。
- size:コピーされる最大文字数。
- format:tm構造体に格納された時刻を表現するための書式指定子。
- time_pointer:暦時刻(カレンダー時刻)を含むtm構造体へのポインタ。
使用例
#include <stdio.h>
#include <time.h>
int main () {
time_t tim;
struct tm *detl;
char buf[80];
time( &tim );
detl = localtime( &tim );
strftime(buf, 20, "%x - %I:%M%p", detl);
printf("Date & time after formatting : %s", buf );
return(0);
}実行結果
Date & time after formatting : 10/23/18 - 10:33AM
プログラムの解説
上記のプログラムでは、異なるデータ型の変数を3つ宣言しています。まずtime()関数で現在の時刻を取得し、続いてlocaltime()関数によって現在の日付と時刻がtm構造体に格納されます。その後、strftime()関数が書式指定子を使って文字列をバッファへコピーし、指定された形式に整形しています。
detl = localtime( &tim ); strftime(buf, 20, "%x - %I:%M%p", detl);
主な書式指定子一覧
strftime()関数でよく使われる書式指定子は以下の通りです。これらを組み合わせることで、目的に応じた柔軟な日付・時刻表示が可能になります。
| 指定子 | 意味 |
|---|---|
| %Y | 年(4桁) |
| %m | 月(01~12) |
| %d | 日(01~31) |
| %H | 時(24時間表記、00~23) |
| %I | 時(12時間表記、01~12) |
| %M | 分(00~59) |
| %S | 秒(00~61) |
| %p | 午前/午後(AM/PM) |
| %x | ロケールに基づく日付表現 |
-
C/C++のmbsrtowcs()関数とは?構文・パラメータ・戻り値と実例を解説
本記事では、C++ STLに含まれるstd::mbsrtowcs()関数の仕組み、構文、および具体的な使用例について詳しく解説します。 std::mbsrtowcs()とは? std::mbsrtowcs()は、C++ STLに組み込まれている関数で、<cwchar>ヘッダーファイル内で定義されています。関数名のmbsrtowcs()は「multibyte string to wide character string(マルチバイト文字列からワイド文字列への変換)」を意味し、再開可能な変換状態を維持しながら、NULL終端されたマルチバイト文字列をワイド文字列表現へと変換します。この
-
C/C++のsystem()関数とは?使い方と実行例を徹底解説
この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int