私は EDT にいて、エンド ユーザーは PDT にいます。WebApp がエンド ユーザーのタイムゾーンで実行されているかのように動作するようにしたいと考えています (たとえば、旅行中であっても、家に帰る時間を表示するためです)。Java サーバーからのタイムスタンプは、エンド ユーザーのタイムゾーン ("Mon Oct 27 06:57:00 PDT 2014" など) を含むようにフォーマットされています。構成ファイルには、"America/Vancouver" などのエンド ユーザー TZ 文字列もあります。私はネイティブの Date() を使用しており、ユーザーに適切な時間を表示していますが、それを使用してクライアントの時間と時間を比較することはできません。私は moment.js に変更しようとしていますが、それを自分のやりたいようにする方法がわかりません。基本的に、上記のタイムスタンプが与えられた場合、m.hour() を呼び出して 6 を取得できるようにしたいと考えています。私はまた、エンドユーザー時間で年間通算日を取得できるようにしたいと考えています (両方とも「今」およびタイムスタンプの場合)、最後のタイムスタンプが現在の時刻からどれだけ遡るかを分単位で確認します。これが私の失敗した試みです:
var d = "Mon Oct 27 06:57:00 PDT 2014";
var ds = d.split(/ /).slice(1).join(' '); // eat "Mon "
var m = moment.tz(ds, "MMM D HH:mm:ss Z YYYY", "America/Vancouver");
alert("" + m.hour()); // 23 ??? Want "6"!
var n = moment.tz("America/Vancouver");
var df = n.diff(m, 'minute');
alert(m.format() + "\n" + n.format() +
"\n" + df + " minutes ago");
フィドル: http://jsfiddle.net/up628qbq/
ありがとう!