簡體   English   中英

編輯JavaScript(明天的日期)

[英]Edit JavaScript (Tomorrow's date)

我正在嘗試編輯一些基本上顯示明天日期的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的日期庫,它知道如何進行計算。 例如,它知道在“11月30日”添加一天是“12月1日”,而不是“11月31日”。 如果我們嘗試通過在當天的數字中加1來手動執行此操作:30 + 1 = 31,但“11月31日”不是有效日期。 要解決這個問題,我們需要編寫一個類似於JavaScript的庫。 顯然,這就像重新發明輪子一樣,沒有任何意義。

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構造函數一次,它將為您完成工作。 您需要創建一個陣列,然后按照您希望的方式對其進行格式化,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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM