我需要一些 Javascript strtotime 类型代码的帮助,拜托。
我们公司只为其会员提供为期 2 天的每周促销活动。因此,当会员登录时,他们会看到宣传促销的横幅。如果他们碰巧在促销日期之外登录,则横幅将链接到信息页面。否则,它会直接链接到促销活动。
目前我们每周都会手动更新,这很痛苦。我们希望能够使用 Javascript* 为我们自动更改链接。好的,没问题,对吧?
好吧,问题是,我们不想做的是每周用特定的日期/时间进入并编辑脚本——否则,有什么意义呢?目前,促销活动于周三上午 9 点进行。到星期四上午 9 点 它会不时更改,每隔几个月左右(周一至周二,上午 9 点至晚上 9 点之类的),因此我们将不得不不时编辑脚本,但如果我们可以避免每周进行一次,那会很棒的。
所以这就是我想出的。它被大量评论,因此我的技术不那么技术的同事可以毫不费力地进行编辑。
var getData = function(){
var d = new Date();
var today = d.getDay(); // current day, numerically
var hr = d.getHours(); // current hour
// For Days:
// 0 = Sunday
// 1 = Monday
// 2 = Tuesday
// 3 = Wednesday
// 4 = Thursday
// 5 = Friday
// 6 = Saturday
var startDay = 3;
var endDay = 4;
// For Hours:
// This is a 24-hour clock. Midnight (12:00 AM) is 0, Noon = 12, 9 PM = 21, etc.
// So for a start time of 9 AM, put 9, and for an end time of 9 PM, put 21.
var startTime = 12;
var endTime = 15;
// Set the "url" variable to the NON-sale landing page. Put the SALE page URL in
// the "url" variables within the nested "if" statements below:
var url = 'http://link-to-the-non-promo-info-page';
if (( today >= startDay ) && ( hr >= startTime )) {
if ( today <= endDay ) && ( hr <= endTime )) {
url = 'http://link-to-the-live-promotion';
}
}
// ... non-essential variables and the actual display code
// below this line...
// ...
}
请注意,我设置了变量,以便促销在下午 12 点到下午 3 点运行。如果这是真的,理想的结果是促销链接显示为周三中午 12 点到周四下午 3 点。显然,这段代码会发生什么,促销横幅在周三 12-3 和周四 12-3 直播。
我玩弄了各种逻辑排列,但无法找到正确的排列。最终,我希望能够打开脚本(或让我的一位同事打开它),并能够设置开始日期/时间和结束日期/时间,而无需设置特定日期( 7 月 24 日星期三到 7 月 25 日星期四),它就可以工作。
如果这是 PHP,我会把它包起来。但它是 Javascript,所以我在完成这项工作时能得到的任何帮助都会很棒。
谢谢,鲍勃
更新:@Kamala,我通过添加分钟和其他一些调整来稍微调整时间,但存在不接受结束时间的问题。请注意,脚本设置为今天开始和结束日期,现在开始/结束时间已经过去(对于 EST 区域,无论如何),但促销链接仍在显示:
var d = new Date();
var today = d.getDay(); // current day, numerically
var hr = d.getHours(); // current hour
var mn = d.getMinutes();
if (mn < 10) {
mn = "0"+mn;
}
var time = hr+":"+mn;
// For Days:
// 0 = Sunday
// 1 = Monday
// 2 = Tuesday
// 3 = Wednesday
// 4 = Thursday
// 5 = Friday
// 6 = Saturday
var startDay = 5;
var endDay = 5;
// For Hours:
// This is a 24-hour clock. Midnight (12:00 AM) is 0, Noon = 12, 9 PM = 21, etc.
// So for a start time of 9 AM, put 9, and for an end time of 9 PM, put 21.
var startTime = "11:00";
var endTime = "12:00";
// Set the "url" variable to the NON-sale landing page. Put the SALE page URL in
// the "url" variables within the nested "if" statements below:
var url1 = 'http://info-landing-page';
if (( today >= startDay ) && ( today <= endDay ) ) { // Awesome, we're within the promo days
if ( ( today != startDay && today != endDay ) // The promo is in full-swing - doesn't matter what time it is
|| ( today == startDay && time >= startTime )
|| ( today == endDay && time <= endTime ) ) {
url1 = 'http://promo-url';
alert("promo url set");
}
} else {
alert("we're pointing to the LP");
}
需要额外的逻辑吗?也许是另一个嵌套的“如果”?我迷路了。
谢谢,鲍勃