日付を文字列に変換する

C:
日付を文字列に変換する

方法:

この目的のために一般的に使用されるのは、<time.h>ライブラリからのstrftime関数です。これにより、形式指定子を指定することで、さまざまな方法で日付と時刻を形式化できます。こちらが簡単な例です:

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

int main() {
    char dateStr[100];
    time_t now = time(NULL);
    struct tm *ptm = localtime(&now);

    // 日付と時刻を文字列に変換(例: "Wed Jun 30 21:49:08 2021")
    strftime(dateStr, sizeof(dateStr), "%a %b %d %H:%M:%S %Y", ptm);
    
    printf("現在の日付と時刻: %s\n", dateStr);
    return 0;
}

サンプル出力は次のようになるかもしれません:

現在の日付と時刻: Wed Jun 30 21:49:08 2021

strftimeに渡される形式指定子を変更することで、形式をカスタマイズできます。例えば、日付をYYYY-MM-DDの形式で取得するには、"%Y-%m-%d"を使用します。

深掘り

strftime関数と<time.h>ライブラリは、C標準ライブラリの一部であり、元々のANSI C標準(C89/C90)にさかのぼります。このアプローチは多くのプラットフォームでサポートされており、直接的であるものの、より直感的な日付と時刻のライブラリを備えた現代のプログラミング言語と比べると、低レベルで面倒に見えるかもしれません。

C標準ライブラリの時間関数は広くサポートされており比較的簡単に使用できるものの、新しい言語のライブラリや国際化機能を備えたサードパーティCライブラリ(例:International Components for Unicode (ICU))に見られるような複雑なタイムゾーン操作や国際化機能には欠けています。

それでも、strftime関数のカスタマイズ能力と広範なプラットフォームサポートは、Cでの日付文字列変換において信頼でき、有益なツールであることを意味します。より高レベルのdatetimeライブラリから来たプログラマーは、その低レベルな性質に慣れる必要があるかもしれませんが、多様なアプリケーションでの日付と時刻のフォーマットに際して、それが非常に強力で多様性があることを見いだすでしょう。