2017-02-06 2 views
1

私はメッセンジャーを作っています。ユーザーのタイムゾーンにメッセージの時刻を表示する必要があります。現在、私はタイムゾーンのために、サーバーメッセージとクライアントメッセージとは異なる時間を持っています。メッセージは、クライアントの日時フィールド上に作成され現地時間の表示方法(タイムゾーンを考慮)?

は等しい新しいDate()です:メッセージは、サーバーの日時フィールドから受信した場合

function Message(sender) { 
    ... 
    this["datetime"] = new Date(); 
    ... 

サーバから来たのctimeです。このコードはメッセージ時間を表示します:

chatMessageTime.innerHTML = new Date(message["datetime"]).toLocaleString("ru", { 
    "hour": "numeric", 
    "minute": "numeric" 
    }); 

そして私が前に言ったように、私は異なるタイムゾーンに時間を持っています。この問題を解決するには?すべてのメッセージのユーザータイムゾーンを表示するにはどうすればよいですか?

+0

サーバーが異なるタイムゾーンで時刻を格納しているか、またはそれらをすべてサーバー時刻に変換していますか? – Zze

+0

@Zzeサーバーはdatetimesをunix時刻形式で保存します。 –

+0

@charlietflサーバーの問題ですか?サーバはUTCで日付時刻をUnixの時刻形式で保存しませんか? –

答えて

0

でJavaScript日付が自動的にユーザーの現在の言語で表示されています。IE用 、日付「2017年2月5日午前23時08分23秒GMT-0300」は、「月2017年2月6日午後12時08分23秒GMTとして示されています-0200 "と入力してください。

console.log(new Date('Sun Feb 05 2017 23:08:23 GMT-0300')); 
+0

必ずしも、* Date.prototype.toString *の出力は完全に実装に依存しますが、ほとんどのブラウザは少なくともバージョンの[* RFC2822 *](http://tools.ietf.org/html /rfc2822#section-3.3)。しかし、タイムゾーンインジケータのようなものは一貫してサポートされていません。 SOコンソールは、常にISO 8601をUTCで使用しているように見えます。したがって、ローカリゼーションはまったくありません。 – RobG

+0

おかげさまで、ありがとうございました。私はハックを使うことにしました。チャットの初期化中、私は時間の差を計算し、単にそれを使ってローカルタイムを表示します。 –

関連する問題