2013-05-09 4 views
1

Моя ассоциация проводит встречи во второй и четвертый вторник каждого месяца, и мне очень нравится код Javascript, поэтому мне не нужно обновлять наш сайт каждые две недели и дата следующего собрания может быть рассчитана и отображена автоматически.Поиск второго и четвертого вторника месяца с Javascript

Я бы очень признателен за помощь, поскольку у меня абсолютно нет скинов в Javascript, только в CSS и HTML.

+0

http://stackoverflow.com/about – Xotic750

ответ

2

Это решение

HTML

<ul id="list"></ul> 

Javascript

function getTuesdays(month, year) { 
    var d = new Date(year, month, 1), 
     tuesdays = []; 

    d.setDate(d.getDate() + (9 - d.getDay()) % 7) 
    while (d.getMonth() === month) { 
     tuesdays.push(new Date(d.getTime())); 
     d.setDate(d.getDate() + 7); 
    } 

    return tuesdays; 
} 

var meetingTuesdays = [], 
    ul = document.getElementById("list"), 
    temp, 
    li, 
    i; 

for (i = 0; i < 12; i += 1) { 
    temp = getTuesdays(i, 2013); 
    meetingTuesdays.push(temp[1]); 
    li = document.createElement("li"); 
    li.textContent = temp[1]; 
    ul.appendChild(li); 

    meetingTuesdays.push(temp[3]); 
    li = document.createElement("li"); 
    li.textContent = temp[3]; 
    ul.appendChild(li); 
} 

console.log(meetingTuesdays); 

На jsfiddle

Update: еще демонстрация для вас

Javascript

function getTuesdays(month, year) { 
    var d = new Date(year, month, 1), 
     tuesdays = []; 

    d.setDate(d.getDate() + (9 - d.getDay()) % 7) 
    while (d.getMonth() === month) { 
     tuesdays.push(new Date(d.getTime())); 
     d.setDate(d.getDate() + 7); 
    } 

    return tuesdays; 
} 

var today = new Date(), 
    theseTuesdays = getTuesdays(today.getMonth(), today.getFullYear()), 
    next; 

theseTuesdays.some(function (tuesday, index) { 
    if (index % 2 === 1 && tuesday > today) { 
     next = tuesday; 
     return true; 
    } 

    return false; 
}); 

alert("Our next meeting is on : " + moment(next).format("MMMM Do YYYY")); 

На jsfiddle

+0

Это почти то, что я ищу, но я только хочу, чтобы отобразить одну дату один раз. – user2367108

+0

Идея такова: «Наша следующая встреча: [дата]» – user2367108

+1

Итак, просто выберите месяц и отформатируйте результат так, как вы хотите, этот пример просто получает все из них. Используйте функцию getTuesdays(), она вернет все текущие значения для этого месяца и года. Я просто зациклился на весь год, чтобы получить их все для вас. Я даже включил moment.js для вас в моем jsfiddle, чтобы упростить форматирование, http://momentjs.com/ – Xotic750

Смежные вопросы