2016-10-10 7 views
0

私は最新の金曜日の始まり(12:00 am、または00:00 am)を取得しようとしています。Momentjs - 最新の金曜日に

moment().isoWeekday(5).startOf('day').toDate()

をしかし、それだけでFriday->日曜日に動作し、月曜日の朝には、これは動作します。その場合には、今度の金曜日を参照します::これは働いている

moment().add('-1', 'week').day(5).startOf('day').toDate()

しかし、私はそれが動的であり、可能な場合は1行で完了する必要があり、現在の日に何もチェックを行わない場所にする必要があります。

いつも最新の金曜日を入手する方法はありますか?現在の日が何であるかにかかわらず。

編集金曜日に実行された場合は、現在の日(金曜日)を返すようにしています。

+0

常に5日間引きますか? '(5)、'日 ').startOf('日 ')。toDate() ' –

+0

ありがとう@DanielDiekmeier。金曜日に実行された場合、それは現在の日になるでしょうか?私は金曜日を週の始まりとして扱おうとしています。 – elzi

+0

@DanielDiekmeier私自身のテストでは、それはそうなるでしょう。金曜日の-5日は日曜になり、同じ週に働きます。完璧。 – elzi

答えて

3

ライブラリを使用したくない場合は、それはかなりまっすぐ進む

var date = new Date(); 
 
while (date.getDay() !== 5) date.setDate(date.getDate() -1); 
 

 
console.log(date)

瞬間

var date = moment(); 

var friday = date.day(date.day() >= 5 ? 5 :-2); 

とミリ秒の精度は重要ではありません場合でです、 moment()を2回呼び出して1行にすることができます(ただし、私は変数を使用するほうがはるかです)

var friday = moment().day(moment().day() >= 5 ? 5 :-2); 
+0

私は '.isoWeekday'を' .day'を超えて使用しています。この場合、 '-2'は何をしていますか? – elzi

+0

それは、現在の日が> = 5(金曜日)の場合、その日付を取得し、他の賢明な日から2を引いたものです。土曜日はどうですか? (正しく理解している場合) – elzi

+0

'5'は金曜日の数字です。すでに「5」を超えている場合、つまりその週の金曜日の後に「5」を返し、そうでない場合は「-2」を返します。 'day()'では、 'day(0)'はいつも月曜日なので、 'day(-2)'は常にfridayです。 – adeneo

0

チェックこの:

var date = moment().utc().isoWeekday(5); 
 
if(moment().day() < 5) { 
 
    date = date.add(-1, 'week'); 
 
} 
 

 
console.log('Recent friday starts:', date.startOf('day').toDate()); 
 

 
console.log('Recent friday ends:', date.endOf('day').toDate());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.js"></script>

+0

金曜日に実行された場合、 '最近の金曜日'は現在の金曜日になるでしょうか? – elzi

+0

は-1週間のため、金曜日に電話をかけても過去の金額が返ってくる – num8er

+0

ええ、申し訳ありませんが、明日は元の日の前日ではなく、金曜日に戻って現在の日を返す必要があります。だからこそ私は「最近の」金曜日の言葉を使用しようとしたのです。 – elzi

関連する問題