我目前在升壓 日誌的過程,與升壓日誌文件名稱在不同的時區
keywords::file_name = (my_file_str + %Y-%m-%d_%H.%5N.log).c_str();
初始化有什麼辦法來改變DateTime對象的時區?我想使用美國/紐約下午5點推出的時區,即EST-2EDT。
我目前在升壓 日誌的過程,與升壓日誌文件名稱在不同的時區
keywords::file_name = (my_file_str + %Y-%m-%d_%H.%5N.log).c_str();
初始化有什麼辦法來改變DateTime對象的時區?我想使用美國/紐約下午5點推出的時區,即EST-2EDT。
是的,這是可能的,這裏是一個函數發生在美國/紐約時間戳:
#include <boost/date_time/local_time/local_time.hpp>
#include <sstream>
std::string getNYCTimestamp() {
boost::posix_time::ptime pt =
boost::posix_time::microsec_clock::universal_time();
boost::local_time::time_zone_ptr utc_zone(
new boost::local_time::posix_time_zone("UTC"));
boost::local_time::local_date_time utc_time(pt, utc_zone);
boost::local_time::time_zone_ptr nyc_zone(
new boost::local_time::posix_time_zone("EST-05:00:00EDT+01:00:00,M4.1.0/02:00:00,M10.5.0/02:00:00"));
boost::local_time::local_date_time nyc_time = utc_time.local_time_in(nyc_zone);
auto our_facet = new boost::gregorian::date_facet("%Y-%m-%d");
our_facet->format("%Y-%m-%d");
auto os = std::ostringstream();
os.imbue(std::locale(std::locale::classic(), our_facet));
boost::posix_time::time_duration t = nyc_time.time_of_day();
os << nyc_time.date() << "_"
<< std::setw(2) << std::setfill('0') << t.hours() << '-'
<< std::setw(2) << std::setfill('0') << t.minutes() << '-'
<< std::setw(2) << std::setfill('0') << t.seconds() << '.'
<< std::setw(6) << std::setfill('0') << t.fractional_seconds();
return os.str();
}
。注意, 「%Y-%間%D_%H.%5N」 是最有可能錯誤的,因爲:
我不是100%肯定這就足夠了(因爲我不知道你的要求是什麼),但在這裏:http://boost-log.sourceforge.net/libs/log/doc/html/log/tutorial/attributes.html是對日誌屬性的討論。在我看來,你可能能夠添加一個時區調整的輔助時間戳。