12

コマンドライン (Debian/Lenny) で実行date +%H-%M-%Sすると、ユーザーフレンドリーな (UTC ではなく、DST レスではなく、普通の人が腕時計に持っている時間) 時刻が出力されます。

で同じものを取得する最も簡単な方法は何boost::date_timeですか?

私がこれを行う場合:

std::ostringstream msg;

boost::local_time::local_date_time t = 
  boost::local_time::local_sec_clock::local_time(
    boost::local_time::time_zone_ptr()
  );

boost::local_time::local_time_facet* lf(
  new boost::local_time::local_time_facet("%H-%M-%S")
);

msg.imbue(std::locale(msg.getloc(),lf));
msg << t;

するとmsg.str()、見たい時間より1時間早い。これが UTC を示しているのか、DST 補正なしのローカル タイムゾーン時刻を示しているためなのかはわかりません (私は英国にいます)。

上記を変更して、DST で修正されたローカル タイムゾーンの時刻を取得する最も簡単な方法は何ですか? 私はそれが関係しているという考えを持っていますboost::date_time:: c_local_adjustorが、例からそれを理解することはできません.

4

3 に答える 3

17

これは私が望むことを行います:

  namespace pt = boost::posix_time;
  std::ostringstream msg;
  const pt::ptime now = pt::second_clock::local_time();
  pt::time_facet*const f = new pt::time_facet("%H-%M-%S");
  msg.imbue(std::locale(msg.getloc(),f));
  msg << now;
于 2010-04-12T20:39:28.703 に答える