問題タブ [boost-date-time]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - RFC 3339 に従って boost::date_time-object をフォーマットする方法
date_time
アプリケーションで時間を表すために、boost でライブラリを使用したいと考えています。このアプリケーションは、 RFC 3339で指定された形式のタイムスタンプを要求する Atom フィードを生成します。 "。
では、この RFC に従って時刻をフォーマットするにはどうすればよいでしょうか?
一日中Date Time Input/Outputのドキュメントを読んでいますが、Z を必要なときに最後に付ける方法がわかりません。また、RFC はオプションの小数秒をサポートしていますが、1 桁のみです (例: "1990-12-31T23:59:60.5Z") (*)。私もこれを行う方法を見つけることができないようです。
date_time
さまざまな必要なフィールドを読み取る独自の書式設定ルーチンをいつでも作成できますが、それはライブラリの粒度に反しているように思えます。
このライブラリのフォーマッタを書いた経験はありますか? それとも私は間違ったことをしていますか?
(*): RFC で指定されている ABNF では 1 桁の小数秒のみが許可されているように思えますが、同じ RFC の例では 2 桁の小数秒が使用されています。それはどういう意味ですか?
c++ - ブーストする unix タイムスタンプ::posix_time::ptime
エポックからの秒数で double を に変換する必要がありptime
ます。これを行う簡単な方法があるに違いないと確信していますが、何も見つかりませんでした。ありがとう。
編集:元のタイムスタンプは浮動小数点です。私はそれを変更することはできませんし、1 秒未満の精度を失いたくありません。
c++ - ブーストptimeから年を取得
既存のプログラムをC++に変換していますが、ここではSybaseのタイムスタンプを操作する必要があります。これらのタイムスタンプには日付と時刻の情報が含まれており、私の知る限り、boost::posix_time::ptime
変数で処理するのが最適です。コードのいくつかの場所で、変数から年を取得する必要があります。
私の質問は、ブーストptime変数から年を最も効率的に抽出するにはどうすればよいですか?以下は、追加の変数と変数のオーバーヘッドを伴う3行のコードを使用するサンプルプログラムです。ostringstream
boost::gregorian::date
ブーストドキュメントによると:
gregorian::date
クラスptimeは、ある時点の日付部分へのインターフェイスに依存します
ただしgregorian::date
、の基本クラスではないようですptime
。どういうわけか私はここで何かが欠けています。
から年を抽出する簡単な方法はありませんptime
か?
サンプル:
c++ - 現在のタイムゾーンを取得するには?
私が見たほとんどの例では:
しかし、コードを実行するマシンの現在のタイム ゾーンを取得したいだけです。タイムゾーン名をハードコーディングしたくありません。
boost-date-time - ブースト日付を初期化する方法は?
ページ
http://www.boost.org/doc/libs/1_42_0/doc/html/date_time/gregorian.html#date_construction
この種の呼び出しでBoost日付を初期化できることを説明します。
しかし、私がそれを試みると、コンパイラは「Jan」を知りません。
それは動作します:
編集:
c++ - 基本的なブーストdate_time入力形式の質問
入力として文字列(char *)へのポインタがあります。日付/時刻は次のようになります。
2010年4月10日土曜日19:30:00
私は日付のみに関心があり、時間には関心がありません。必要な形式で「input_facet」を作成しました。
しかし、私はそれをどうするかわかりません。最終的には、文字列から日付オブジェクトを作成したいと思います。私はその入力ファセットとフォーマットで正しい方向に進んでいると確信していますが、それをどのように使用するかわかりません。
ありがとう。
c++ - ブーストを使用して現在のタイムゾーンで現在の時刻を取得する最も簡単な方法::date_time?
コマンドライン (Debian/Lenny) で実行date +%H-%M-%S
すると、ユーザーフレンドリーな (UTC ではなく、DST レスではなく、普通の人が腕時計に持っている時間) 時刻が出力されます。
で同じものを取得する最も簡単な方法は何boost::date_time
ですか?
私がこれを行う場合:
するとmsg.str()
、見たい時間より1時間早い。これが UTC を示しているのか、DST 補正なしのローカル タイムゾーン時刻を示しているためなのかはわかりません (私は英国にいます)。
上記を変更して、DST で修正されたローカル タイムゾーンの時刻を取得する最も簡単な方法は何ですか? 私はそれが関係しているという考えを持っていますboost::date_time:: c_local_adjustor
が、例からそれを理解することはできません.
c++ - boost date_time を使用して HTTP 日付を解析および作成する
私は一種の HTTP プロキシを作成しているので、次の 3 つのことを実行できる必要があります。
- RFC 2616, sec 3.3で指定された 3 つの形式のいずれかを指定して、HTTP 日付を解析します。
- ファイルの日時を HTTP 日付文字列に変換し、
- 日付を文字列に出力します。
参考までに、これらは解析する必要がある日時の例です。最初の形式のみを出力します。
Boost date_time でこれらすべてを実行できると確信していますが、番号 1 で問題が発生しています。これを行うコードを既に持っている人はいますか? おそらく私はグーグルを上手に使用していませんが、ブーストでこれを行う方法の例はどこにも見つかりません。
助けてくれてありがとう!
更新: 解決策はありますが、2 番目のパーサーの年が間違っており (2 桁の年であるためだと思います)、最後のパーサーは例外を返します (以下の出力を参照)。
出力:
visual-c++ - boost :: gregorian :: date
Visual C++2005で動作させて1.43をブーストすることができません
この単純なソースコード:
リンク時エラーが発生します:
私は問題なくファイルシステムやスレッドのような他のコンパイルされたブーストライブラリを使用しています...
私はそれを使用してコンパイルしました
c++ - 文字列から日付/時刻を解析するには?
入力: 日付とオプションの時刻を含む文字列。異なる表現は素晴らしいですが、必要です。文字列はユーザーが指定したものであり、形式が正しくない可能性があります。例:
"2004-03-21 12:45:33"
(これがデフォルトのレイアウトだと思います)"2004/03/21 12:45:33"
(オプションのレイアウト)"23.09.2004 04:12:21"
(ドイツ語形式、オプション)"2003-02-11"
(時間がない場合があります)
必要な出力: エポック (1970/01/01 00:00:00) からの秒数またはその他の固定点。
おまけ: また、ローカル システム時間の UTC オフセットを読み取ることもできます。
入力は、問題のマシンの現地時間であると想定されます。出力は UTC である必要があります。システムは Linux のみです (Debian Lenny と Ubuntu が必要です)。
を使用しようとしましboost/date_time
たが、ドキュメンテーションに頭を悩ませることができないことを認めなければなりません。以下は、システムの現地時間から UTC への必要な変換なしで機能します。
必要な UTC オフセットを提供できると思いますboost::date_time
が、方法がわかりません。