首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非特定日期的Javascript strtotime格式设置

非特定日期的Javascript strtotime格式设置
EN

Stack Overflow用户
提问于 2013-07-25 18:32:18
回答 2查看 95关注 0票数 1

我需要帮助一些Javascript strtotime类型的代码,请。

我们公司每周只为会员举办为期2天的促销活动。因此,当一个成员登录时,他们会看到一个宣传推广的横幅。如果它们碰巧在促销日期之外登录,则横幅链接到信息页。否则,它直接与促销联系在一起。

目前我们每周都要手工更新,这很痛苦。我们希望能够使用Javascript*为我们自动更改链接。好吧没问题对吧?

好吧,问题是,我们不想做的是每周都要用特定的日期/时间编辑剧本--否则,有什么意义呢?目前促销时间是周三上午9点。到星期四上午9点。它不时地变化,每隔几个月左右(星期一到星期二,9a-9p,诸如此类的事情),所以我们将不得不不时地编辑剧本,但是如果我们能避免每周做一次,那就太好了。

这就是我想出来的。这是大量评论,所以我的不那么技术的同事可以进去,并作出编辑没有太多的困难。

代码语言:javascript
复制
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链接仍在显示:

代码语言:javascript
复制
    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");
 }

是否需要额外的逻辑?另一个嵌套的“如果”?我迷路了。

谢谢,鲍勃

EN

回答 2

Stack Overflow用户

发布于 2013-07-25 18:39:56

试试这个..。

代码语言:javascript
复制
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';
    }
}
票数 1
EN

Stack Overflow用户

发布于 2013-07-25 18:47:12

所以你需要的是两张支票。如果宣传片是在第一天,是在某个时间之后吗?或者如果是在第二天,是在某个时间之前吗?

代码语言:javascript
复制
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:

代码语言:javascript
复制
if ((today > startDay  &&  today < endDay) ||
   (today == startDay  &&  hr >= startTime) ||
   (today == endDay  &&  hr <= endTime)) {
    url = 'http://link-to-the-live-promotion';
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17866024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档