2017-10-02 3 views
1

moment.js私のアプリで自分の日付を管理しています。しかし、何らかの理由でカレンダーに期待された結果が常に表示されるとは限りません。時にはtodayの値を期待しています。最後にtomorrow(他の値は正しいanytimesと思われます)を取得しています。moment.calendar()は "Today"の間に "Tomorrow"を表示します

私の関数のエントリ値として、私は内部で実行されているタイムスタンプ、現在の日を取得するmoment.now()、そして最後にカレンダー関数を使用してcurrent dayと私のtimestampを比較しています。

これはAPIの問題ですか?または、12時間後に新しい日数が計算されていますか?私はこのウェブサイト上で私の日付を確認しようとしている

// timeStampに= 1506982867000

$scope.testDate = function(timeStamp) 
{ 
    // Getting my timeStamp into a moment 
    var day = moment(timeStamp); 

    // Getting the current day 
    var now = moment(); 

    // moment.Calendar() function 
    return day.calendar(now, { 
    sameDay: '[Today]', 
    nextDay: '[Tomorrow]', 
    nextWeek: 'dddd', 
    lastDay: 'dddd', 
    lastWeek: 'dddd', 
    sameElse: 'L' 
    }); 

}; 

EDIT

まあ、:https://www.epochconverter.com/私はGMT場合は、右の日付を取得し、間違っています1つ(私のアプリには1つ)、それはGMT + 2です。

私のカレンダーでこのGMT値を変更するにはどうすればよいですか?

+1

あなたは 'console.log(timeStamp)'をしますか? – Nope

+0

'timeStamp' unworkingの値は:1506982867000 – Memphis

+0

私は[** plnkr **](https://plnkr.co/edit/tvWSTgpkYDSpSZQ1tHVm?p=preview)でそれをテストし、今日の正しい値を得ましたが、私はGMTであなたの編集を見て、別のタイムゾーンであなたのアプリケーションを実行して、あなたのタイムゾーンを変更したいのですか? – Nope

答えて

0

私はmoment()。utcOffset()メソッドを使用して問題を解決しました。彼の助けをフランに感謝!また

var day = moment.utc(timeStamp); 
var now = moment.utc(); 

を参照してください:あなたはあなたの値はUTCを表現したい場合は、単にUTCとして、あなたの値を初期化

$scope.testDate = function(timeStamp) 
{ 
    // utcOffset(a) parameter a is for GMT+a 
    var day = moment(timeStamp).utcOffset(0); 
    var now = moment().utcOffset(0); 

    // moment.Calendar() function 
    return day.calendar(now, { 
    sameDay: '[Today]', 
    nextDay: '[Tomorrow]', 
    nextWeek: 'dddd', 
    lastDay: 'dddd', 
    lastWeek: 'dddd', 
    sameElse: 'L' 
    }); 

}; 
関連する問題