2015-10-12 3 views
0

Я работаю над проектом, в котором мне нужно найти, какие дни праздники, и отображать конкретные сообщения для этих праздников.Разделение на месяц в зависимости от количества недель. JS

С праздниками, такими как Рождество, это просто 25 декабря. Но для других праздников, таких как благодарение, это немного сложно, потому что это четвертый четверг ноября.

Подход, который я использую, разделяет эту неделю.

day = moment() 
month = day.month() + 1 
weeknum = Math.floor((day - 1)/7) + 1 
holiday2 = month + "/" + weeknum + "/" + day 

Сегодня случается коламбус день, и таким образом, исходя от того, что у меня есть, это должно быть '10/2/1. 10-й месяц, 2-я неделя, 1-й день. (10/12). Проблема, которую я получаю, это с тем, что я прямо сейчас holiday2, я получаю:

10/206381035675/1444667249719 

Так что ... Я знаю, что технически я близко, что я вижу '10/2/1 «но я получаю очень большие аномальные числа.

Мой вопрос 2 раза. Как бы я конденсировал числа, чтобы вместо получения 10-значного ответа я получил бы только 1 или две цифры, которые мне нужны?

Будет ли лучший способ приблизиться к этому?

ответ

2

moment() возвращает объект даты. Вам нужно получить дату, похожую на то, как вы уже получаете месяц. You can do this using .date().

day = moment(); 
month = day.month() + 1; 
date = day.date(); 
weeknum = Math.floor((date - 1)/7) + 1; 
holiday2 = month + "/" + weeknum + "/" + date; 

Ваше текущее решение не работает из-за того, что даты преобразуются в целые числа. В частности, они сохраняются как number of milliseconds since 1970/01/01.

This answer предлагает лучший способ для получения номера недели:

var weeknum = Math.ceil(date/7);