問題タブ [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 - C で time_t を次の午後 10 時に設定しますか?
time_t 変数を次の日時の午後 10 時に設定したいと考えています。たとえば、午後 11 時だった場合は、time_t を翌日の午後 10 時 (23 時間後) に設定し、午後 5 時だった場合は、午後 10 時 (5 時間後) に設定します。
これを行う方法はいくつか考えられます (次の午後 10 時までの秒数を計算し、その値を加算するなど) が、いずれもかなりハックなアプローチのように感じます。これを達成するための最良の方法は何ですか?
c - エポック>LONG_MAXから数秒後に何が起こりますか?
宿題については、たくさんの物を扱うプログラムを書いていtime_t
ます。オーバーフローがないかチェックしようかと思ったのですが、オーバーフローするとみんな困ってしまうのではないかと思いました。
これについての計画はありますか?エポックからの時間がストレージを超えるとどうなりますか?
c++ - http 日付ヘッダー文字列を time_t に変換する
「Wed, 07 Mar 2012 09:58:26 GMT」という形式で返される http ヘッダー フィールド「Date」を値に変換したいと考えていtime_t
ます。
http ヘッダーにこのフィールドの標準形式があるかどうかはわかりません。
私はこれを見ました:文字列からの日付/時刻の解析(ブースト?)、しかし、私が言及した形式のファセットを作成できるかどうかわかりません。
また、移植できる機能が必要です。
自分で簡単に解析できましたが、より良い、より迅速で安全な方法があることを願っています。
c++ - Representing the difference between time_t
Why is the difference between two time_t
s returned by the difftime( time_t t1, time_t t2)
method as a double
? I don't see where the precision requirement comes from.
c - HP-UX 11.31(IA64) で 64 ビット time_t をサポートする方法を教えてください。
この HP-UX 11.31(IA64) で long 型と time_t 型が 4 バイト サイズであることを知って驚いています。どういうことなんですか?
私の環境:
私のコード:
time_t を aCC で 64 ビットにする方法を見つけるのを手伝ってくれる人はいますか?
c - strftime() を使用して utc タイムスタンプを取得する
strftime
関数を使用して、現在の utc 時刻を文字列にエンコードしようとしています。
これまでのところnowLocal
、私のタイムゾーン(CET)で現在の時刻が含まnowUtc
れており、utc 時刻が含まれています。違いはtm_gmtoff
値に正確に従っています。
次に、エポックからの秒数を取得するために formatstrftime()
を呼び出します。"%s"
結果は私には奇妙に思えます。フォーマットは次のように記述されているため、両方のstrftime()
呼び出しからまったく同じ文字列を取得することを期待していました。%s
エポックからの秒数、つまり since 1970-01-01 00:00:00 UTC
。うるう秒のサポートが利用可能でない限り、うるう秒はカウントされません。
しかし、私は2つの異なる値を得ました:
しかもその差は7200 ( tm_gmtoff
) ではなく3600です。誰もそのような行動を説明できますか? それともバグですか?
これを行っている理由は、時間の値をネットワーク経由で転送し、異なるタイム ゾーンにあるターゲット マシンの現在の時間と比較する必要があるためです。ターゲットマシンで私がしたかった:
しかし、私は得ました:
とにかく、現在のタイムゾーンに従って をstrptime()
設定します。tm_zone
しかし、timelocal()
代わりに使用しても、 12:27:28 CESTではなく11:27:28 CESTtimegm()
である必要があるため、正しい値が得られません。このエラーは の異なる結果に関連していますか?strftime()
この後半へのコメントはありますか?
c++ - stat(システムコール)からのmtimeのフォーマット
だから私はLinuxで「find」コマンドを模倣するプログラムを書いています。私はすべての面倒を見てくれましたが、ctime、mtime、atimeから文字列をフォーマットする方法がわかりません。
引数がstructtime_tであることは知っていますが、フォーマット可能な文字列に変換することができません。
私が持っているものの一部は以下の通りです。エラー「エラー:引数「4」の「__time_t」を「consttm」に変換できません」「size_tstrftime(char *、size_t、const char *、const tm *)」が原因で機能しません
理想的には、次のようなものが必要です。
ここで、sbはstat構造体です。次の形式で印刷する必要があります:HH:MM:SS-MM / DD / YY
答えは簡単なことだと思いますが、理解できません。
c++ - time_tが他のtime_tの間にあり、ある程度の誤差があるかどうかを確認します
timeAとtimeBの2つのtime_t変数があります。
私がやりたいのは、timeAがtimeBと同じかどうかを確認することです。ただし、場合によっては完全に同じではなく、2つの間に1秒または2秒の差がある可能性があることを知っているので、実際に確認したいのは次のとおりです。
そうすることは可能ですか?
1つのオプションは、time_tを使用せず、代わりにtimeBをtm構造体として保持し、比較の直前に2秒を減算してtime_t timeBminusを作成し、次に4秒を加算してtime_ttimeBplusを作成することだと思います。問題は、数百万のtimeAとtimeBのペアを比較し、可能な限りシンプルかつ高速に保ちたいということです。
どうすればいいですか?
c++ - 日付と時刻の数値をtime_tに変換し、タイムゾーンを指定します
私は次の整数を持っています:
それらの値は、2012
それぞれ、、、、、、です。アプリケーションの別の場所で「UTC」を選択した場合は「2012/06/2712:47:53 UTC」の日時を表し、「2012/06/2712:47:53AEST」を選択した場合は「アプリケーションのどこかで「AEST」を選択しました。06
27
12
47
53
これをに変換したいのですが、これtime_t
を行うために現在使用しているコードは次のとおりです。
だから私はとを使用してtm struct
いmktime
ますが、これは常に私のローカルタイムゾーンを想定しているため、うまく機能していません。
これを行う正しい方法は何ですか?
以下は私がこれまでに思いついた解決策です。基本的に、次の3つのいずれかを実行します。
- UNIXの場合は、単に使用します
timegm
- UNIXでない場合
- どちらか、UTCエポックとローカルエポックの違いをオフセットとして使用して計算を行います
- 予約:数学が正しくない可能性があります
- または、「TZ」環境変数を一時的にUTCに設定します
- 予約:このコードをマルチスレッド化する必要がある場合は、トリップします
- どちらか、UTCエポックとローカルエポックの違いをオフセットとして使用して計算を行います
NBStringBuilder
は内部クラスであり、この質問の目的には関係ありません。
より詳しい情報:
これは、ブーストなどを使用して簡単に実行できることを私は知っています。しかし、これはオプションではありません。数学的に、またはacまたはc ++標準関数、あるいはそれらの組み合わせを使用して実行する必要があります。
timegm
この問題は解決しているように見えますが、C/POSIX標準の一部ではないようです。#ifdef $PLATFORM
このコードは現在、複数のプラットフォーム(Linux、OSX、Windows、iOS、Android(NDK))でコンパイルされているため、ソリューションにタイプのものが含まれている場合でも、これらすべてのプラットフォームで機能させる方法を見つける必要があります。
c - 32 ビットの time_t 値を 64 ビットの time_t に変換する方法
私は組み込みシステムに取り組んでいます。私たちのプラットフォームは 32 ビットなので、time_t
サイズは 32 ビットです。
char
今のところ、構造体を配列として Windows 7 コンピューターに送信したいと考えています。私の構造体のフィールドの1つはですtime_t
。構造を変更することはできません。
したがって、時間値を 32 ビット変数で Windows マシンに送信する必要があり、char 配列が到着したら、32 ビットの unsigned int 値を 64 ビットに変換する必要がありますtime_t
。
32 ビットは 1970 年から始まり、64 ビットは 1600 年から始まるtime_t
ため、32ビット整数を 64 ビットに直接変換することはできないと思います。time_t
では、変換する方法はありますか?