2017-08-05 4 views
-3

私はこの時点ではできなかった一般的な問題があります。私はプロジェクトに取り組んでいます。私たちのデータベースは、ヨーロッパ/アムステルダム時間に基づいています。しかし、クライアントのタイムゾーンと日付は毎回変わります。あなたは私が言っていることを知っています PHP(CakePHP)でデータベースから日付を取得します。そして、私はこれらの日付に "2分前"と書いておきたいだけです。私たちはそのようなデータベースの日付を "2017-08-04 13:43:38"私は別の問題や機能のために使用することができます。 は、私が今インターフェースによって任意のレコードを変更していますtimeago.jsクライアント(JavaScript)とサーバー(PHP)のタイムゾーンを均等にする方法

私の問題

を使用しています。 (2017-08-04 13:43:38)(イスタンブールタイムゾーン)システムは、修正日時として2017-08-04 12:43:38(アムステルダムタイムゾーン)を保存します。だから、私のJavaScriptは常に約1時間前に表示されます分未満です私はすべてのクライアントタイムゾーンをアムステルダムのタイムゾーンとして変更したいと思います。

私の質問:私はそれを行う必要があり

  1. ? (クライアントまたはサーバー)
  2. 私はクライアントサイドでtrynaの仕事をしています。まもなくjavascriptでタイムゾーンを均等にする方法は?
+0

質問を明確にする必要があります。 "2017-08-04 13:43:38"のような文字列に組み込みのパーサーを使用している場合は、おそらくローカルマシンとして扱われます(しかし確かではありません)ので、ホストタイムゾーンの設定が異なる。 UTCで日付を保存し、手動で解析することをお勧めします(ライブラリが役立ちます)。組み込みのパーサを回避するには、[* Date.parseが間違った結果をもたらすのはなぜですか?*](https://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results)を参照してください。 ) – RobG

+0

@RobGよろしくお願いします。あなたが正しい。私はちょうど私の質問内容を編集しました。 –

答えて

0

私はそれを行うべきですか? (クライアントまたはサーバー)

サーバー上には、機能と時計の正確さが自信を持っているホスト環境があります。

私はクライアント側でtrynaの仕事をしています。まもなくjavascriptでタイムゾーンを均等にする方法は?

クライアント側で行う場合は、クライアントで確実に解析され、タイムゾーンを含む文字列を指定する必要があります。 ISO 8601形式の文字列を使用して、クライアントが正しく構文解析したり、手動で文字列を解析して特定することができます(ライブラリは役に立ちますが、必須ではありません)。

現在アムステルダムはUTC + 0200なので、 "2017-08-04T13:43:38 + 0200"や "2017-08-04T11:43:38Z"のような文字列を送信し、クライアントの時計が正確であることを願う。

あなたはmoment.jsのようなライブラリを使用している場合は、文字列を解析し、同じようfromNowを使用して、「優しい」形式を得るためにそれを使用して取得することができます。

// Using date for Amsterdam 
 
var d = moment("2017-08-05T13:43:38+0200"); 
 
console.log(d.format('D MMM YYYY [at] hh:mm A [local]') + ' was ' + d.fromNow() + '.'); 
 

 
// Equivalent UTC 
 
var d = moment("2017-08-05T11:43:38Z"); 
 
console.log(d.format('D MMM YYYY [at] hh:mm A [local]') + ' was ' + d.fromNow() + '.');
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

がフレンドリーに注意してくださいいくつかのフォーマットは、実際にそれらを嫌っています。今日が火曜日のときの「5日前」と「先週」を見れば、どちらが先にあるのか不思議に思う。

0

インターネット時刻サーバーを使用して正確な時刻を表示したい場合は、ミリ秒単位でプラットフォーム間で時刻を同期させることができます。いくつかの公的なものはここに見つけることができるhttp://tf.nist.gov/tf-cgi/servers.cgi。私はそのクライアント側を使って時間を調べ、それをサーバーに送ります。私はそれらのサーバがISO8601の時間を提供すると信じています。

関連する問題