2

Java では、Date オブジェクトで getTime() メソッドを呼び出して、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒単位の日付を表すことができます。この表現は、他のプログラミング言語 API で共通ですか?

たとえば、別のプログラミング言語の API を使用している人に、現在の日付と時刻をミリ秒単位で教えてほしいと頼んだ場合、この値を計算すると同じ日付と時刻になると仮定しても問題ありません。 Javaを使用してサーバー側で。

私が尋ねている理由は、サーバー側で処理する必要があるタイムスタンプをクライアントに提供してもらいたい http 経由でパブリック API を構築しているためです。私の質問は、yyyy-MM-dd'T'HH:mm のような完全な文字列表現ではなく、1970 年 1 月 1 日 00:00:00 GMT からのミリ秒の形式で日付表現を求めるのが安全かどうかです。 ss.SSS'Z

4

4 に答える 4

5

いいえ、ミリ秒のタイム スタンプは普遍的ではありません。RFC 3339などの標準の文字列形式を使用して、コンピューター間または同じコンピューター上の言語ランタイム間で時間を交換することをお勧めします。ウィキペディア: システム時間も参照してください。

于 2012-06-10T11:17:46.427 に答える
2

一般に、すべての数値タイムスタンプが 1970 年 1 月 1 日をベースラインとして使用すると想定することはできません。しかし、その形式でタイムスタンプを要求するように API を指定できるため、実際には問題ではありません。ベースラインを調整したり、数値のタイムスタンプを必要な形式にスケーリングしたりするのは簡単なことです。

したがって、代替案を見てください:

  • 数値のタイムスタンプは、メッセージ内のスペースがわずかに少なく、変換がわずかに簡単で安価です。ただし、誰かが間違ったスケーリングやベースラインを使用して仕様を誤って実装するリスクがあります。

  • 標準 (ISO など) のテキスト形式は (わずかに) より多くのスペースを使用し、変換がわずかに困難ですが、標準のパーサー/アンパーサーの実装が存在します。(仕様で許可されていないバリアントを誰かが使用するリスクは依然としてあります。)

  • 非標準のテキスト形式は、誤った実装や形式のあいまいさの可能性があるため、お勧めできません。(たとえば、3 文字のタイムゾーンはあいまいです)

  • テキスト形式は人間にとって読みやすいです。たとえば、デバッグ目的で。

しかし全体として、必要な形式とその意味を明確に指定していれば、数値または (標準ベースの) テキスト形式を使用するかどうかは問題ではないと思います。

于 2012-06-10T11:24:51.450 に答える
1

Javaもオペレーティングシステムからのみその日付を取得するため、その日付形式に依存できます。使用するプログラミング言語は問いません。詳細な説明については、Wikipedia のunix timeを参照してください。

于 2012-06-10T11:18:01.550 に答える
0

率直な答えの代わりに、OAuth について言及します。OAuth 1.0 仕様によると:

サービス プロバイダーが特に指定しない限り、タイムスタンプは1970 年 1 月 1 日 00:00:00 GMT からの秒数で表されます。

したがって、ミリ秒単位の粒度が本当に必要ない場合は、他の人が行うことを行います。

于 2012-06-10T11:19:16.287 に答える