编辑JavaScript(明天' s日期)

时间:2015-11-05 00:05:00

标签: javascript html

我正在尝试编辑一些基本上显示明天日期的JavaScript代码。但是对于周五和周末(周五,周六和周日),它应显示下周一的日期。

这是我的代码:

var date = new Date(); //  timezone
date.setDate(date.getDate() + 1); // move to tomorrow
date.setUTCHours(11,0,0,0); // set time using UTC(GMT) timezone
document.getElementById("next-shipment").textContent = date.toLocaleString();

JSFiddle

例如,假设今天是2015年11月4日星期二.javascript代码应显示" 2015年11月5日" --->以这种格式。 在周五,周六和周日,代码应显示:下周一的日期: 2015年11月9日

代码应该全年都可以使用。

2 个答案:

答案 0 :(得分:2)

试试这个:



var today = new Date(); //  timezone
document.getElementById("result").innerHTML = "<br/>Today's next day is: " + FormatDate(GetNextDay(today));


function GetNextDay(date){
  date.setDate(date.getDate() + 1); // move to next day.
  switch(date.getDay()) {
  case 0: //Sunday
  case 6: //Saturday
    date = GetNextDay(date);
  }
  return date;
}

function FormatDate(date){
  var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

  return months[date.getMonth()] + " " + date.getDate() + ", " + date.getFullYear();
}

function TestDate(){
  var date = new Date(document.getElementById("TestDate").value);
  document.getElementById("result").innerHTML += "<br/>Selected day's next day is: " + FormatDate(GetNextDay(date));
}
&#13;
<input type="text" id="TestDate" value="November 06, 2015" />
<input type="button" value="Get Next Day" onclick="TestDate();" />
<div id="result"></div>
&#13;
&#13;
&#13;

这个想法很简单:

前两行和最后的TestDate()功能仅用于测试,您在代码中不需要它们。

这项工作主要由GetNextDay()功能完成。你给它一个日期,它计算并返回下一个日期(跳过周末)。它分两步完成:

1-首先,它会在给定日期date.setDate(date.getDate() + 1);添加一天。

2-它检查新日期date.getDay()的日期。如果它是6或0(星期六或星期日),它再次调用自己date = GetNextDay(date);,这意味着它将再添加一天。这个函数调用自身的概念被称为&#34;递归&#34;在编程中。当它到达星期一时,它将停止自行调用并返回日期。

正确计算第二天的唯一方法是在日期中添加一天。这利用了JavaScript的日期库,它知道如何进行计算。例如,它知道将一天添加到&#34; 11月30日&#34;是&#34; 12月1日&#34;,NOT&#34; 11月31日&#34;。如果我们尝试通过在当天的数字中加1来手动执行此操作:30 + 1 = 31,但是&#34; 11月31日&#34;不是有效日期。要解决这个问题,我们需要编写一个类似于JavaScript的库。显然,这就像重新发明轮子一样,没有任何意义。

答案 1 :(得分:1)

Date构造函数还有一个名为getDay()的函数,它返回0到6之间的整数(0 =星期日,6 =星期六)。您可以使用它来检测星期五(0),星期六(6),星期日(0)并省略它们。

这是一个演示,提醒您是否是周末:

var myDate = new Date();
myDate.setFullYear(2015);
myDate.setMonth(11);
myDate.setDate(6);

if(myDate.getDate() == 5 || myDate.getDay() == 6 || myDate.getDay() == 0) alert('Weekend!');

document.write(myDate);

要查找第二天,请传递Date构造函数一次&amp;它会为你做的工作。您需要创建一个阵列,然后按照您希望的方式格式化 2015年11月5日

<强> JS:

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

var tomDate = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
var day = tomDate.getDate();
var month = monthNames[tomDate.getMonth()];
var year = tomDate.getFullYear()

var d = new Date();
var n = d.getDay();


if(n == 5){
   var fromFri = n + 4;
   document.write("<b>" + month + " " + fromFri + ", " + year + "</b>");

}else if (n == 6){
   var fromSat = n + 3;
   document.write("<b>" + month + " " + fromSat + ", " + year + "</b>"); 

}else if (n == 0) {
   var fromSun = n + 2;
   document.write("<b>" + month + " " + fromSun + ", " + year + "</b>");

}else{
   document.write("<b>" + month + " " + day + ", " + year + "</b>");
}

更新:CODEPEN DEMO