Boostライブラリまたはstdを使用して、オフセットを知らずに特定のタイムゾーンで現在の時刻を取得することはできますか?boostまたはstdを使用して特定のタイムゾーンで現地時間を取得する
たとえば:「ヨーロッパ/ローマ」の現在の現地時間は何ですか?
Boostライブラリまたはstdを使用して、オフセットを知らずに特定のタイムゾーンで現在の時刻を取得することはできますか?boostまたはstdを使用して特定のタイムゾーンで現地時間を取得する
たとえば:「ヨーロッパ/ローマ」の現在の現地時間は何ですか?
これはHoward Hinnant's free, open-source, cross-platform, C++11/14 timezone libraryでワンライナーです:
#include "date/tz.h"
#include <iostream>
int
main()
{
std::cout << date::make_zoned("Europe/Rome", std::chrono::system_clock::now()) << '\n';
}
私にとってこれだけの出力:
2017-11-29 16:24:32.710766 CET
チェック:https://theboostcpplibraries.com/boost.datetime-location-dependent-times
#include <boost/date_time/local_time/local_time.hpp>
#include <iostream>
using namespace boost::local_time;
using namespace boost::posix_time;
using namespace boost::gregorian;
int main()
{
time_zone_ptr tz{new posix_time_zone{"CET+1"}};
ptime pt{date{2014, 5, 12}, time_duration{12, 0, 0}};
local_date_time dt{pt, tz};
std::cout << dt.utc_time() << '\n';
std::cout << dt << '\n';
std::cout << dt.local_time() << '\n';
std::cout << dt.zone_name() << '\n';
}
OUTPUT:
2014-May-12 12:00:00
2014-May-12 13:00:00 CET
2014-May-12 13:00:00
CET
私は余分なライブラリを避けることを望んでいましたが、これは他のものよりずっと簡単です。おそらく、私はこの図書館に行くでしょう。 – gliatsos
役立つなら、このライブラリは将来のC++標準のために提案されています。それはできないかもしれませんが、現在のところ、オッズは60/40です。 「」(最高2020)に表示されるまで数年かかるでしょう。しかし、私はそれに取り組んでいます... –
私は私のCMakeプロジェクトで使用することができますこれは単一のヘッダーファイルですか? – gliatsos