jquery mySQL时间戳转换编码bug

时间:2012-02-16 22:33:15

标签: jquery mysql ruby-on-rails timestamp countdown

我有一个应用程序,我需要将mySQL日期时间戳和倒计时转换为当前系统时间。我正在使用keith wood jquery倒计时,它已正确安装并且可以工作......但我无法获取代码来转换我的时间戳以保存我的生命。

我发现这个代码片段在某个地方转换时间戳,但我在firefox控制台中收到的错误是:timestamp.replace不是函数。我不是js编码的专家,所以我确信它是显而易见的。任何人都可以提供的帮助将非常感激。这开始让我疯了。

这是一个rails应用程序。

$(document).ready(function mysqlTimeStampToDate(timestamp) {
    //function parses mysql datetime string and returns javascript Date object
    //input has to be in this format: 2007-06-05 15:26:02
    var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
    var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
    return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
});

$(document).ready(function () {
    $('textLayout').countdown({until: mysqlTimeStampToDate("#work_order_hard_completion_datetime"), layout: '{dn}d {hnn}{sep}{mnn}{sep}{snn}'});
});

1 个答案:

答案 0 :(得分:0)

执行此操作时:

$(document).ready(function mysqlTimeStampToDate(timestamp) {
    // ...
});

当文档准备就绪时,你告诉jQuery运行你的mysqlTimeStampToDate函数,你没有定义全局mysqlTimeStampToDate函数供以后使用。然后,当jQuery运行你的函数时,它将是executed with the jQuery object as its argument,因此timestamp实际上是jQuery的$,当你的函数运行时replace上没有$方法}。

在控制台打开的情况下运行此操作,您将看到我的意思:http://jsfiddle.net/ambiguous/eUNS3/

我想你只想这样说:

function mysqlTimeStampToDate(timestamp) {
    //function parses mysql datetime string and returns javascript Date object
    //input has to be in this format: 2007-06-05 15:26:02
    var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
    var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
    return new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
}

$(document).ready(function () {
    $('textLayout').countdown({until: mysqlTimeStampToDate("#work_order_hard_completion_datetime"), layout: '{dn}d {hnn}{sep}{mnn}{sep}{snn}'});
});