2

我正在尝试在我们的电子商务网站上输出类似于以下内容的内容:

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 日期名称?所以它会输出明天的名字而不是今天。此外,是否可以跳过周末?

4

2 回答 2

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>
于 2011-01-30T14:00:55.103 回答
2

这是一个也将跳过周末的单线:

document.write("Order by 5pm today for dispatch on " + 
                                  dayNames[ ((now.getDay() + 1) % 6 ) || 1 ] );
  • 如果getDay是Friday(5),那么+1是6,%6是0,这是假的所以|| 1 等于 1(星期一)。

  • 如果 getDay 是星期六 (6),那么 + 1 是 7,% 6 是 1(星期一)

  • 如果 getDay 为星期日 (0),则 + 1 为 1,% 6 为 1(星期一)

无需维护并行阵列。

于 2011-01-30T14:08:54.357 回答