2016-03-28 3 views
1

これは明瞭にするために、角を使っていくつかのデータバインディングを行うためにmoment.jsを使用していますmoment.jsはtimezooneへの入力の時間を変更していますが、すでにそのタイムゾーンになっています

$scope.resolveTime = function() { 

    var m = moment.tz($scope.inputTime, 'America/Los_Angeles'); 
    $scope.inputTime = m; 
    var zone = jstz.determine(); 

    $scope.outputTime = m.tz(zone.name()); // Convert CDT to local time 

    console.log("inputtime: " + $scope.inputTime.format()) 
    console.log("local: " + $scope.outputTime.format()) 
}; 

私はそれが十分に簡単だろうと思ったが、イム何推測が起こっているが、その後becasue、私はinputTimeを渡し、瞬間を教えてくれたときに、それがその後、PDTに現在のローカル時間に変換America/Los_AngelesだのではなくPDTに設定することをあります以下のコードは、それをローカルのタイムゾーンに変換して戻します。その結果、両方の変数に同じ数字が返されます。誰もがこれを回避する方法を知っていますか? 結果はユーザーが時間を(PDTで)入力し、ユーザーの現地時間の何時に表示されるはずです。

アップデート:この多くの私はそれが実際にローカルでDateオブジェクトに入力を変更する私の時間ピッカーだと思う、私が使用していた時間ピッカーが参照

+1

を、瞬間は、最初にそれを使用して、タイムゾーンに変換されますあなたが指定した。各ステップの前後にいくつかのロギングを追加して、値がどのように変更されているかを正確に見ることができます。 –

+0

それは意味がありますが、私はちょうど '$ scope.inputTime = moment.tz( 'America/Los_Angeles')を初期化しようとしました;そして、私がログを記録しても私のローカルタイムを取得していますが、日付フォーマットは瞬間ではありません。私は角度の可能性があると感じているそれを再フォーマット – Toxicable

+0

私はそれが実際に私の時間ピッカーがそれをやっているかもしれないと思う。 Im Angular UIを使用してBoostrap時間ピッカー、私は自分自身を再登録する必要があるように見える – Toxicable

答えて

1

用アンギュラ宇井ブートストラップであるに探した後、これを行うことができますもう少し簡単です。

まず、モーメントは変更可能です。このため、$scope.inputTime$scope.outputTimeの値は同じです。これを修正するには.clone()を使用してモーメントを複製してください。

また、ユーザーのローカルタイムに日付を取得するには、ブラウザに組み込まれた動作に頼ることができ、瞬間の.local()の機能に頼ることができます。実際に自分のタイムゾーンを知りたい場合を除き、jstzに行く必要はありません。

jstzが0.50(2015年12月)の時点で提供している機能で覚えているタイムゾーンがmoment.tz.guess()であることは注目に値する。一緒にすべてを置く

、あなたのコードは次のようになります: `$ scope.inputTime`はすでにそれにタイムゾーンのオフセットを持っている場合

function() { 

var m = moment.tz($scope.inputTime, 'America/Los_Angeles'); 
$scope.inputTime = m; 

$scope.outputTime = m.clone().local(); // Convert CDT to local time 

console.log("inputtime: " + $scope.inputTime.format()) 
console.log("local: " + $scope.outputTime.format()) 
}; 
+0

私はこれは私のためにそれを行うことができますが、私の時間のピッカーを修正する必要があり、彼女は行くことが良い場合は、js図書館を含めるのが好きですその彼女の – Toxicable

+0

あなたの日付ピッカーに接続されている場合、あなたはそれに接続されています。既にプロジェクトでjquery/moment/boostrapを使用している場合は、Eonasdan/bootstrap-datetimepickerを見ることができます。それはすべての日の代わりに瞬間を使用します。私はそれが昨年9月の時点でタイムゾーンの瞬間をサポートしていると信じています。これはあなたのコードをもっと簡単にするでしょう。 –

関連する問題