如何在特定日期和时间每周两次增加网页上的数字?
例如,网页会显示:
“2苹果”
然而每周二和周二星期四晚上9点,这个数字应该增加两个。
所以到星期五这个数字应该增加到6个“苹果”
在Javascript,php或Jquery中增加此功能的简单方法是什么?
答案 0 :(得分:1)
正如评论中提到的那样,我建议你使用cron来处理这个问题。
首先,您必须将值存储在某处(文件,数据库,...)。然后,您应该创建一个cron作业,该作业运行的代码可以在一周的给定日期增加和更新您的值。
关于crons的一些帮助:https://en.wikipedia.org/wiki/Cron#Examples
我想添加关于cron和php的帖子:Executing a PHP script with a CRON Job
希望有所帮助
答案 1 :(得分:0)
这里是一个Javascript版本,你可以传递它应该开始计算的日期,你想要知道苹果数量的日期,一周中的苹果将被添加,更新的一天中的小时数将在每个日期添加的苹果的地方和数量。
Date.prototype.addDays = function (days) {
var result = new Date(this);
result.setDate(result.getDate() + days);
return result;
}
Date.prototype.addHours = function (hours) {
var result = new Date(this);
result.setHours(result.getHours() + hours);
return result;
}
function getApples(startdate, date, updateDays, updateTime, applesPerUpdate) {
var startDay = startdate.getDay();
var firstUpdateDate;
for(day of updateDays) {
if (day >= startDay) {//assumes startdate has no time added
firstUpdateDate = startdate.addDays(day - startDay).addHours(updateTime);
break;
}
}
if (!firstUpdateDate)
firstUpdateDate = startdate.addDays(7 - (startDay - updateDays[0])).addHours(updateTime);
var updateDaysReverse = updateDays.slice(0).reverse();//clones the array
var dateDay = date.getDay();
var lastUpdateDate;
for(day of updateDaysReverse) {
if (day < dateDay || day == dateDay && date.getHours() > updateTime) {
lastUpdateDate = date.addDays(day - dateDay);
break;
}
}
if (!lastUpdateDate)
lastUpdateDate = date.addDays(updateDaysReverse[0] - (7 + dateDay));
lastUpdateDate = new Date(Date.UTC(1900 + lastUpdateDate.getYear(), lastUpdateDate.getMonth(), lastUpdateDate.getDate(), updateTime, 0, 0, 0));
var secs = Math.trunc((lastUpdateDate - firstUpdateDate));
if (secs < 0) return 0;
var dayDiffs = [];
for(day of updateDays)
dayDiffs.push(day - updateDays[0]);
var weeks = Math.trunc(secs / 604800000);
var days = Math.trunc((secs % 604800000) / 86400000);
var apples = weeks * updateDays.length;
for(diff of dayDiffs)
{
if (diff <= days)
apples++;
else
break;
}
return apples * applesPerUpdate;
}
// important, day and month is zero-based
var startDate = new Date(Date.UTC(2016, 01, 07, 0, 0, 0, 0));
var updateDays = [2, 4];// 0 = sunday , have to be in order and must be 0 <= x < 7
var updateTime = 9;
console.log(getApples(startDate, new Date(), updateDays, updateTime, 2));
比我更复杂,并且我没有做太多测试,所以可能存在错误。
Here is a plunker使用这些值。