下面是一些代碼來顯示它可能會怎麼做,希望有足夠的意見。
據我所知,英國的一些地區觀察夏令時,但以下內容不應受時區變化的影響,因爲它使用本地日期方法。
任何日期都可以用於循環的開始,我已經完全隨機選擇了2011年6月10日。此外,可以使用任何時間將最後一天的消息從「今天放入垃圾箱」更改爲標準「下一週期爲x天」。
該算法計算從開始日期到下一整整兩週的毫秒數,方法是從每兩週毫秒的最後一整整兩週減去毫秒數。然後剩下的部分轉換爲全天。
爲了節省週期結束前一天(本例中是週四)的不明確性,該消息表示週期結束於「明天」,而不是在1天內,並且在當天本身,直到18:00或6下午說它的週期今天結束。之後,它說週期在14天或更短時間內結束。
// Date objects are based on milliseconds (8.64e7 per day)
// Calculate milliseconds for a fortnight
var msPerFortnight = 8.64e7 * 14;
// Any date can be the start of the fortnightly cycle
// Make Friday 10 June 2011 first day of cycle,
// Cycles end on 25 March, 6 April 2016.
// Note months are zero based so June is 5
var firstDayOfCycle = new Date(2011, 5, 10);
// Time of day to stop showing "put bins out today" message on start/end day
// 18 is 6 pm
var endHour = 18;
// Get the day name for the cycle start/end
var dayName = ['Sunday','Monday','Tuesday','Wednesday','Thursday',
'Friday','Saturday'][firstDayOfCycle.getDay()];
// Convert end hour to convenient format with am/pm
var endHourNeat = (endHour % 12 || 12) + ' ' + (endHour < 12? 'am' : 'pm');
// Get a date for now
var now = new Date();
// Get milliseconds to next full fortnight by
// msPerFortnight minus milliseconds since last full fortnight
var m = msPerFortnight - ((new Date() - firstDayOfCycle) % msPerFortnight);
// Calculate time remaining full days
var daysLeft = Math.ceil(m/8.64e7);
// Create a human friendly message
var message;
// If more then one day left, or after 18:00 on last day, show this message
if (daysLeft == 14 && now.getHours() < endHour) {
message = 'Today is ' + dayName + ', so please put your bins out before ' + endHourNeat + '!';
} else if (daysLeft > 1) {
message = 'Put your bins out on ' + dayName + ' in ' + daysLeft +
' day' + (daysLeft == 1?'':'s') + ' time.';
} else if (daysLeft == 1) {
message = 'Put your bins out tomorrow, on ' + dayName + '.';
}
document.write(message);
你甚至可以添加週期結束的日期,並添加序,所以它可能會讀「把你的垃圾桶了上週五25日,3天時間。」但我會留給你的。
請參閱http://stackoverflow.com/help/how-to-ask並顯示您的搜索結果發現/測試 – profesor79
您可能會先用'new Date()'創建一個Date對象。您可以使用* getDay *方法確定一天(5週五)。您還需要一些時期,週五是每兩週週期的開始。 – RobG