如何根据json应显示的日期和时间显示json收到的字符串元素?

时间:2015-10-06 18:34:55

标签: php jquery json

我有一个数据库,我在那里存储了一个文本,它的持续时间和出现在网页上的时间。

php的结果如下:

{"text_content":"dgsgdsgds","text_duration":"15","start_time":"2015-09-28 23:11:15"},{"text_content":"dgsgdsgds","text_duration":"15","start_time":"2015-09-28 23:11:30"},{"text_content":"gdsgdsgds","text_duration":"15","start_time":"2015-10-01 14:00:00"}

我有一个jquery脚本从数据库中提取数据并将其打印在屏幕上:

var results =[];
var cursor = 0;

function myFunction () {
    $.getJSON('list2.php', function(json) {
        results = json;
        cursor = 0;

        // Now start printing
        printNext();
    });
}

function printNext(){
    if(cursor == results.length){
        // Reset the cursor back to the beginning.
        cursor = 0;
    }

    // Print the key1 in the div.
    //$('#mydiv').html(results[cursor].key1);
    $('#mydiv').hide('fast', function(){ $('#mydiv').html(results[cursor].text_content); $('#mydiv').show('fast'); });

    // Set a delay for the current item to stay
    // Delay is key2 * 1000 seconds
    setTimeout(function(){
        printNext();
    }, results[cursor].text_duration * 1000);

    // Advance the cursor.
    cursor++;
}

现在我想添加一个文本在屏幕上显示的功能仅在从数据库中提取的日期start_time,但是我不确定是否可以在jquery上执行,没有任何进一步访问服务器代码.. 我尝试添加一些if语句,如:

if(results[cursor].start_time == new Date()){

在将其打印在屏幕上之前,但它没有做到这一点。你能帮帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:5)

使用JSON.parse

解析json字符串
var myObj = JSON.parse(results[0]);

并比较您的start_time

if (new Date(myObj.start_time) == new Date())

如果您想在特定时间使用setTimeout运行您的功能:

var diff = new Date(myObj.start_time).getTime() - new Date().getTime();
setTimeout(function() {
    $('#mydiv').hide('fast', function() {
        $('#mydiv').html(results[cursor].text_content);
        $('#mydiv').show('fast');
    });
}, diff)

或者您可以使用setInterval每1000毫秒执行一次功能,并使用clearInterval停止:

function check() {
    if (new Date(myObj.start_time) == new Date()) {
        $('#mydiv').hide('fast', function() {
            $('#mydiv').html(results[cursor].text_content);
            $('#mydiv').show('fast');
        });
        clearInterval(myInterval);
    }
}

var myInterval = setInterval(check, 1000)