我需要帮助一些Javascript strtotime类型的代码,请。
我们公司每周只为会员举办为期2天的促销活动。因此,当一个成员登录时,他们会看到一个宣传推广的横幅。如果它们碰巧在促销日期之外登录,则横幅链接到信息页。否则,它直接与促销联系在一起。
目前我们每周都要手工更新,这很痛苦。我们希望能够使用Javascript*为我们自动更改链接。好吧没问题对吧?
好吧,问题是,我们不想做的是每周都要用特定的日期/时间编辑剧本--否则,有什么意义呢?目前促销时间是周三上午9点。到星期四上午9点。它不时地变化,每隔几个月左右(星期一到星期二,9a-9p,诸如此类的事情),所以我们将不得不不时地编辑剧本,但是如果我们能避免每周做一次,那就太好了。
这就是我想出来的。这是大量评论,所以我的不那么技术的同事可以进去,并作出编辑没有太多的困难。
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...
// ...
}请注意,我设置了vars,以便该广告运行12 p3pm。如果这是真的,那么所期望的结果将是广告链接显示周三下午12点到周四下午3点。显然,这个代码所发生的情况是,广告横幅是周三12-3,然后是12-3周四。
我一直在胡闹各种逻辑排列,却没能找到正确的排列。最终,我希望能够打开脚本(或者让我的一位同事打开它),并且能够设置开始的日期/时间和结束的日期/时间,而不必设置特定的日期(7月24日星期三到7月25日星期四),而且它只是起作用。
如果这是PHP,我会把它包装起来。但是这是Javascript,所以我能得到的任何帮助都会是非常棒的。
谢谢,鲍勃
UPDATE:@Kamala,我通过添加分钟和其他一些调整来稍微调整时间,但是存在一个问题:它不接受结束时间。请注意,脚本被设置为开始和结束日期是今天,开始/结束时间现在已经过去(无论如何,对于EST区域),但是promo链接仍在显示:
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");
}是否需要额外的逻辑?另一个嵌套的“如果”?我迷路了。
谢谢,鲍勃
发布于 2013-07-25 18:39:56
试试这个..。
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 && hr >= startTime )
|| (today == endDay && hr <= endTime ) )
url = 'http://link-to-the-live-promotion';
}
}发布于 2013-07-25 18:47:12
所以你需要的是两张支票。如果宣传片是在第一天,是在某个时间之后吗?或者如果是在第二天,是在某个时间之前吗?
if ( today === startDay && hr >== startTime ) {
url = 'http://link-to-the-live-promotion';
} else if ( today === endDay && hr <== endTime ) {
url = 'http://link-to-the-live-promotion';
}对于你的问题,这两天之间没有任何日子。不需要检查day > startDay && day < endDay是否。
编辑:嗯,你可能想要这种能力,以防你的宣传活动持续3天。下面是另一个尝试来处理这个问题(重写为使用OR's而不是if-否则-if‘s:
if ((today > startDay && today < endDay) ||
(today == startDay && hr >= startTime) ||
(today == endDay && hr <= endTime)) {
url = 'http://link-to-the-live-promotion';
}https://stackoverflow.com/questions/17866024
复制相似问题