将jQuery中的日期与不同格式匹配

时间:2016-08-31 09:37:30

标签: javascript jquery date

我有div,我提供这样的日期和时间

<div class="timing">
   <div id="count-down" data-date="2016-08-31 14:21:00"> </div>
</div>

我如何与当前日期匹配或比较,因为我以此格式获取当前日期Wed Aug 31 2016 14:34:58 GMT+0500 (Pakistan Standard Time)

如果当前日期大于提供的日期

,我想将网页重定向到新位置
var currentDate = new Date();
var providedDate = $('#count-down').attr('data-date')

if (currentDate.getDate().toString > providedDate)
{
    window.location.href = 'Promo';
    $('.timing').css("display", "none");
    $('.website-loading').css("display", "block");
}

1 个答案:

答案 0 :(得分:1)

  

我有div,我提供这样的日期和时间

<div id="count-down" data-date="2016-08-31 14:21:00"> </div>

data - 属性中的字符串与ECMA-262中指定的格式不一致(&#34; T&#34;缺少日期和时间之间的分隔符),所以你应该通过编写解析函数或使用库来手动解析它,并提供要解析的格式。

如果你使用Date构造函数(或Date.parse,它们等同于解析)来解析字符串,你可能会得到一个无效的日期(例如在Safari中,new Date('2016-01-01 12:00:00')产生一个无效的日期),因为解析非标准字符串完全取决于实现。

有许多合适的图书馆,一些建议:

  1. moment.js进行解析,格式化,时区和算术,并且有CDN
  2. fecha.js解析和格式化只是比moment.js
  3. 小得多

    创建Date对象时,它只有一个内部值(称为时间值),即自1970-01-01T00:00:00Z(javascript epoch,与UNIX纪元相同)后的毫秒数。当您调用 toString 方法时,结果是一个依赖于实现的字符串,它在实现之间有所不同(在您的情况下,您会看到类似&#34; Wed Aug 31 2016 14:34:58 GMT + 0500(巴基斯坦标准时间)&#34;,一个不同的实现可能产生其他东西。

      

    我如何与当前日期匹配或比较,因为我得到了   此格式的当前日期Wed Aug 31 2016 14:34:58 GMT+0500 (Pakistan Standard Time)

    比较日期时,您真的只想比较时间值。如果您使用关系运算符><进行比较,他们会将日期强制转换为时间值,以便您可以直接比较日期,例如:

    var providedDate = fecha.parse($('#count-down').attr('data-date'), 'YYYY-MM-DD HH:mm:ss');
    
    if (Date.now() > providedDate) {
      // providedDate is in the past
    }
    

    请注意,由于要解析的字符串中没有提供时区信息,因此将其视为&#34; local&#34;日期和时间以及主机系统的当前设置用于确定与UTC的偏移,然后在计算时间值时使用该偏移。当使用默认的 toString 方法从Date生成本地日期和时间字符串时,相同的系统反向工作。

    此外:

    currentDate.getDate()
    

    只返回日期(即月中的日期)作为没有年份和月份的数字。