2011-01-30 2 views
2

Я пытаюсь что-то подобное следующему на нашем сайте электронной коммерции:Показать имя завтрашнего дня в javascript?

Order by 5pm today for dispatch on Monday 

Очевидно, что слово понедельник будет заменен именем на следующий день (в идеале на следующий рабочий день т.е. не в субботу или воскресенье).

У меня есть следующий простой скрипт javascript, который выполняет самую базовую версию. Он просто выводит имя текущего дня:

<p id="orderBy"> 
<script type="text/javascript"> 
    <!-- 
    // Array of day names 
    var dayNames = new Array("Sunday","Monday","Tuesday","Wednesday", 
       "Thursday","Friday","Saturday"); 
    var now = new Date(); 
    document.write("Order by 5pm today for dispatch on " + dayNames[now.getDay()]); 
    // --> 
</script> 
</p> 

Есть ли способ манипулирования вышеуказанным кодом +1 днем? Таким образом, это будет выводить имя завтрашнего дня, а не сегодня. Кроме того, можно ли пропустить выходные?

ответ

3

Другой способ ...

<p id="orderBy"> 
<script type="text/javascript"> 
    <!-- 
    // Array of day names 
    var dayNames = ["Sunday","Monday","Tuesday","Wednesday", 
       "Thursday","Friday","Saturday"]; 
    var nextWorkingDay = [ 1, 2, 3, 4, 5, 1, 1 ]; 
    var now = new Date(); 
    document.write("Order by 5pm today for dispatch on " + 
       dayNames[nextWorkingDay[now.getDay()]]); 
    // --> 
</script> 
</p> 
+0

Я пропустил, что хотел пропустить выходные. Ницца. –

+0

Рекомендуем использовать литерал с массивом над 'new Array'. –

+0

Отлично. Только то, что я хотел. – dannymcc

2

Вот один вкладыш, который также пропустит выходные:

document.write("Order by 5pm today for dispatch on " + 
            dayNames[ ((now.getDay() + 1) % 6) || 1 ]); 
  • Если getDay пятница (5), то + 1 6 ,% 6 равно 0, что ложно, поэтому || 1 делает его 1 (понедельник).

  • Если getDay является суббота (6), то + 1 составляет 7,% 6 является 1 (понедельник)

  • Если getDay это воскресенье (0), то + 1 = 1,% 6 является 1 (Понедельник)

Не нужно поддерживать параллельный массив.

+1

Это аккуратный, но я предпочитаю параллельный массив, потому что он делает очевидным, что делает код, а также упрощает изменение правила - Если вы найдете курьера, который по субботам отправляется. –

+0

@Noel: Да, массив будет предлагать большую гибкость. Хорошая точка зрения. (Хотя в этом конкретном случае вы просто измените% на 7, и у вас есть субботы.) Http://jsfiddle.net/EgFkL/1/ – user113716

+0

Также рабочие дни не одинаковы в каждой стране, здесь в Израиле его воскресенье в четверг, другие страны разные. –

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