問題タブ [time-t]
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++ - strptime 文字列時刻の time_t への解析エラー
mysql から %Y-%m-%d %H:%M:%S 形式の時間値をフェッチし、time_t に保存しようとしています。そのために2つの関数を使用しています。
しかし、分と時間を正しく解析していないようです。これはバグの可能性がありますか、それとも何か不足していますか。
これが出力です。
c++ - 失敗する可能性がある同等の *time* パーサーに std::string を書き込みます
size_t は符号なしであるため、負の値は許可されません。time_t は私の知る限り符号付きであるため、size_t に -1 を割り当てることができます。ただし、 time_t については完全にはわかりません。ヘッダー ファイルの定義に従うと、次のようになります。
、次にここに:
そして最後に
__SYSCALL_SLONG_TYPEが何であるかはよくわかりませんが、 signed long だと思います。残念ながら、このトレースを行った後でも、他の C++11 プラットフォームにも同じ実装があることを願うばかりです。これが合法であり、それらすべてに対して明確に定義されているかどうかはまだわかりません。
もちろん、time_t を符号付きにすることは理にかなっています。たとえば、タイム ゾーンをモデル化するために、負の時間オフセットを持つことができるからです。しかし一方で、1970 年以降は数えるべき秒数が多いため、署名なしにすることは理にかなっています。したがって、常識はどちらの方向にも当てはまります :) time_t でグーグル検索すると、次のように返されました。
「歴史的な理由から、これは通常、1970 年 1 月 1 日 UTC の 00:00 時間から経過した秒数を表す整数値 (つまり、UNIX タイムスタンプ) として実装されます。ただし、ライブラリは別の時間表現を使用してこの型を実装する場合があります。」
ソース: http://www.cplusplus.com/reference/ctime/time_t/
および同じページで:「移植可能なプログラムは、この型の値を直接使用するべきではありませんが、標準ライブラリの要素への呼び出しに常に依存して、それらを移植可能な型に変換する必要があります。」
そのため、time_t はすべてのシステムで明確に定義されているわけではありませんが、time() は time_t: を返すため、インターフェイスでそれをエクスポートするのは初めてではありません。他にどのタイプを使用すればよいですか?
以下の2つの理由でお願いしています。
- 速度: struct tmのような構造体を使用すると、より多くのバイトがあるため、それをコピーしたり、別の struct tm と比較したりすると、long で同じことを行うよりも遅くなります。
- 順序付け:日付の高速なデータ型が必要です。これにより、a < b を実行して、日付 a と b のどちらが最初に来るかを判断できます。
質問: time_t はすべてのプラットフォームで明確に定義された時間表現ではないため、(1) 高速で、(2) 互換性があり、使用できるデータ型はどのようなものですか?
たとえば、time_t の順序については、次のようになります。
time_tはすべてのプラットフォームで汚染されませんか?
c++ - ファイルの統計時間の比較
Unix ベースのシステムでファイルの変更を監視する必要がありますが、Boost にアクセスできません。次のロジックが正しいかどうか疑問に思っています。おそらく非効率的だと思います.whileループでまったくスリープしないことで大量のサイクルを無駄にしていることはわかっていますが、ファイルが変更の間にどれくらいの時間かかるかを見積もっていません.比較的迅速に:
c++ - 比較演算子を使用した time_t 値の比較
2 つtime_t
の値があり、どちらが大きいかを調べたいと考えています。
time_t
__int64
私のプラットフォーム上に内部的にあります。<
、>
および演算子を使用==
して値を比較できますか? 2 つの時間値の違いを知りたくありません。
コードは Windows 上で実行されるだけなので、移植性は気にしません。
このように値を比較することは正しいですか?
c - 数秒/数分間実行されるループを定義する方法
私の目的はwhile
、定義された時間 (この例では 90 秒) ループを実行することです。正確に 90 秒である必要はありませんが、1 ~ 2 秒の誤差は許容されます。この目的のために clock()` 関数を使用することにしました:
ラップトップ (x86、3.13 カーネル、gcc 4.8.2) で実行すると、ストップウォッチは完了までに72 秒を計測します。elapsed
(私のラップトップで秒単位の精度を得るには1000が必要でした)
ARM デバイス (armv5tejl、3.12 カーネル、gcc 4.6.3) で実行すると、コードを完了するのに58 秒かかります。(armv5で使用100
する必要がありました)。elapsed
室温でコードを実行するので、クロックは安定しているはずです。カーネルがスレッドをスリープ状態にし、それらを起動する時間などに不正確さがあることはわかっています。したがって、前に述べたように、完璧なタイミングが得られるとは思っていませんが、ある程度の精度はあるはずです。
私はusleep
(でもnanosleep
)のみを使用しようとしましたが、解像度も良くありませんでした. 最後に、システム時間 (時、分、秒) を取得して経過時間を計算する一番下のコードを考え出します。そして、それは良い精度で動作します。
使用するのにコストがかからない別のソリューションがあるのだろうか?
最後に、 内で実行する必要がありpthread
ます。
c++ - localtime を time_t に変換する (C++)
C++ http://aliarth.lt/date.cpplocaltome_to_time()
で date() 関数を作成しましたが、変換で 1 つの問題が発生しました。その local_time 変数の方法を知っている人はいますか:
に変換しtime_t
ますか?
linux - Linux カーネルの 64 ビット time_t
カーネル 3.19.1 をコンパイルしましたが、まだ問題がありtime_t
ます。cout << sizeof (time_t);
私の意図した8バイトではなく、4バイトのサイズを与える単純なプログラムです。
make menuconfig 中に特定のオプションをオンにする必要がありますか?