bugfix> c++ > 投稿

このようなタイムスタンプを印刷しようとしています。

2018-05-24T20:16:07.339271

Boostやサードパーティのライブラリを使用したくありません。標準ライブラリのみを使用したい。 Clang 6を使用しているので、必要に応じてC ++ 17を使用できるはずです。

私は chrono を見始めましたそして、このようなものを持っています。

auto now = std::chrono::high_resolution_clock::now();

しかし、私は私が上から欲しい日時形式を取得する方法がわかりません。

回答 3 件
  • あなたの最善策は std::localtime を使用していると思います  + std::put_time

  • 次のコードは、標準C ++のみを使用します。に含まれるデータ* loc_time そしてmilli_secs 現地時間で目的の出力を生成するために使用できます。 UTCで出力を取得するには、std :: localtimeの代わりにstd :: gmtimeを使用します。

    // get actual system time
    const auto now = std::chrono::system_clock::now();
    // get seconds since 1970/1/1 00:00:00 UTC
    const auto sec_utc = std::chrono::system_clock::to_time_t(now);
    // get pointer to tm struct (not thread safe!)
    const auto loc_time = std::localtime(&sec_utc);
    // get time_point from sec_utc (note: no milliseconds)
    const auto now_s = std::chrono::system_clock::from_time_t(sec_utc);
    // get milliseconds (difference between now and now_s
    const auto milli_secs = std::chrono::duration<double, std::milli>(now - now_s).count() * .001;
    
    

  • standard library c++ does not provide a proper date type, so you can use   
    structs and functions from c which is inherited on c++. <ctime>  header
    file need to include in c++ program. i think below code will help you.
        time_t now = time(0);
        cout<<now<<endl;
        tm *lt = localtime(&now);
    
    

あなたの答え