javascript - 编辑 JavaScript(明天的日期)

标签 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 日

该代码应全年有效。

最佳答案

试试这个:

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));
}
<input type="text" id="TestDate" value="November 06, 2015" />
<input type="button" value="Get Next Day" onclick="TestDate();" />
<div id="result"></div>

这个想法相当简单:

前两行和末尾的 TestDate() 函数仅用于测试,您的代码中不需要它们。

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

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

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

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

关于javascript - 编辑 JavaScript(明天的日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534441/

相关文章:

php - Javascript 转义等号 PHP

javascript - 用不重复的随机数填充数组

javascript - 如何多次使用下拉列表中的选项

隐式声明的 JavaScript 变量

html - 底部对齐有问题

html - 如何在 Shiny 的应用程序的 navbarPage 中设置 tabPanel 标题的颜色?

javascript - 如何向 ember 组件传递参数

javascript - 使用 *ngfor 的多个选择标签更改第一个选择标签值会影响其他选择标签

javascript - 更改 SVG <text> 而不更改其子 <tspan> 的正确方法

javascript - 在按钮组中切换类