[C++] 133 現在日時の取得

[M1 Mac, Big Sur 11.6.8, NO IDE]

個人的にC++ではこれまで扱ってなかったのが意外でした。

#include <stdio.h>
#include <time.h>
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>

using std::cout; using std::endl;
using std::string;

int main()
{
    time_t now = time(NULL);
    struct tm *pnow = localtime(&now);
    
    int year = pnow->tm_year+1900;
    int month = pnow->tm_mon + 1;
    int day = pnow->tm_mday;
    int hour = pnow->tm_hour;
    int min = pnow->tm_min;
    int sec = pnow->tm_sec;

    // 0埋め文字列化
    std::ostringstream os;
    os << std::setfill('0') << std::setw(4) << year;
    os << std::setfill('0') << std::setw(2) << month;
    os << std::setfill('0') << std::setw(2) << day;
    os << "_";
    os << std::setfill('0') << std::setw(2) << hour;
    os << std::setfill('0') << std::setw(2) << min;
    os << std::setfill('0') << std::setw(2) << sec;

    string now_str = os.str();

    cout << "now_str " << now_str << endl;
}
--------------------------------------------------
出力例
--------------------------------------------------
now_str 20220811_184519