[英]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();
例如,假設今天是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.