2016-03-04 11 views
11

moment.jsを使用して、デフォルトの日付に日を追加または減算する方法を教えてください。 moment.js元の日付に影響を与えずに日付を加算/減算する

は、私は以下のように、週の開始日と終了日を取得しようとしています:

const current = moment.tz('2016-03-04', 'America/Los_Angeles'); 
const startOfWeek = current.startOf('isoWeek').weekday(0); 
const endOfWeek = current.endOf('isoWeek').weekday(6); 

endOfWeekを呼び出して、私は期待値を取得しています。 しかし、私の問題はstartOfWeekendOfWeekの値で上書きされてしまうことです。私はstartOfWeekendOfWeek

+0

はこの '瞬間を()してみてください(7「日」)を追加します。また、これはstartOfWeekの値を無効にしています – Raviteja

+0

[fiddle](https://jsfiddle.net) ? – Raviteja

答えて

-1

両方の値を取得したい

startOfWeekの形式を取得し、変数に保存することにより、問題を解決しました。その後、新しい変数から、それをモーメントインスタンスに変換し、ここからendOfWeekという値を取得します。

const current = moment.tz('2016-03-04', 'America/Los_Angeles'); 
const startOfWeek = current.startOf('isoWeek').weekday(0); 

const startOfWeekConvert = startOfWeek.format('YYYY-MM-DD'); 

const endOfWeek = startOfWeekConvert.endOf('isoWeek').weekday(6); 

これで、今週の開始日と終了日の両方を同時に取得できるようになりました。

+0

これは動作しません。 'startOfWeekConvert'変数は' format'で作成したため、*文字列*です。したがって、 'endOf'関数はありません。 –

21

変更する前に、瞬間を最初にクローンするだけで済みます。 current.clone().whatever...またはmoment(current).whatever...のいずれかを使用します。彼らはどちらも同じことをします。

これは、モーメントがに変更可能であるため、です。

+0

これは正しい方法です。 – okkko

2

あなたは現在の値のクローンを作成して、操作を実行する必要があります。

const current = moment.tz('2016-03-04', 'America/Los_Angeles'); 
const startOfWeek = current.clone().startOf('isoWeek').weekday(0); 
const endOfWeek = current.endOf('isoWeek').weekday(6);