0

我正在使用以下 javascript 代码根据当前日期显示未来 7 天。

<script >
<!--

var m_names = ["January", "February", "March", 
"April", "May", "June", "July", "August", "September", 
"October", "November", "December"];

var d_names = ["Sunday","Monday", "Tuesday", "Wednesday", 
"Thursday", "Friday", "Saturday"];

var myDate = new Date();
myDate.setDate(myDate.getDate()+7);
var curr_date = myDate.getDate();
var curr_month = myDate.getMonth();
var curr_day  = myDate.getDay();
document.write(d_names[curr_day] + "," + m_names[curr_month] + " " +curr_date);

//-->
</script>

我正在使用这个 javascript 代码让我的客户知道他们什么时候可以拿到他们的包裹。

该脚本会自动将 7 天添加到当前日期。如果当前日期在星期六或星期日,我希望它调整未来日期(+7)。

如果当前日期是星期六,我希望它添加(+9 天)。如果当前日期是星期天,我希望添加(+8 天)

我希望添加周一至周五之间的所有当前日期(+7 天)。

关于如何实现这一点的任何想法?

4

3 回答 3

1

You can use the .getDay() method to find out the weekday. E.g

if (myDate.getDay() == 5) // Saturday

Note the days start at 0 for Monday, 1 for Tuesday, etc.

于 2013-10-27T08:58:30.850 回答
1

按照 CompuChip 的回答(对不起,C,评论太长了!):

if (myDate.getDay() == 5) // Saturday
    myDate.setDate(myDate.getDate()+9);
else
if (myDate.getDay() == 6) // Sunday
    myDate.setDate(myDate.getDate()+8);
else
    myDate.setDate(myDate.getDate()+7);

您也可以switch在此处使用语句(如果您不知道如何使用:这是查找并尝试它的最佳时机!)。

第三种有趣的方法是使用数组。现在您知道 Monday=0、Tuesday=1 等,您可以为每个工作日构建一个要添加的值列表:

var nextWeek = [7, 7, 7, 7, 7, 9, 8];
myDate.setDate(myDate.getDate()+nextWeek[myDate.getDay()]);

但是,星期数和调整值之间存在严格的关系:

myDate.setDate( myDate.getDate()+ ((myDate.getDay() < 5) ? 7 : 14-myDate.getDay()) );
于 2013-10-27T10:46:37.657 回答
0

这真的很简单:

var days = 24 * 60 * 60 * 1000;

function getFutureDate(date) {
    switch (date.getDay()) {
    case 0:  return new Date(date.getTime() + 8 * days);
    case 6:  return new Date(date.getTime() + 9 * days);
    default: return new Date(date.getTime() + 7 * days);
    }
}

现在你可以使用getFutureDate如下:

var futureDate = getFutureDate(new Date);

但是我们可以写一个更通用的解决方案:

var milliseconds = 1
  , seconds      = 1000 * milliseconds
  , minutes      = 60 * seconds
  , hours        = 60 * minutes
  , days         = 24 * hours
  , weeks        = 7 * days;

function addDate(date, time) {
    return new Date(date.getTime() + time);
}

现在我们可以重写我们的getFutureDate函数如下:

function getFutureDate(date) {
    switch (date.getDay()) {
    case 0:  return addDate(date, 1 * weeks + 1 * days);
    case 6:  return addDate(date, 1 * weeks + 2 * days);
    default: return addDate(date, 1 * weeks + 0 * days);
    }
}

当然,在这种情况下,最好简单地使用旧getFutureDate功能。但是,我只是想向您展示如何从您的日期中添加(或减去)任意数量的时间。

于 2013-10-27T11:27:37.687 回答