1

我的问题很简单,但我很难解决。基本上,我将从数据库中的new Date().getTime()方法接收到的数字存储在数据库中,然后在前一段时间的函数中使用该字符串。该函数运行良好,但我不知道如何将字符串转换回DD-MM-YYYY ; h:m:s格式

我以前的功能:

<script>
$(document).ready(function() {
var db_time = //the string from the database;
var c_db_time = db_time/1000;//remove the milli seconds
function ago()
{
    var current_time = new Date().getTime()/1000;//remove the milli seconds
    var dif = Math.round(current_time - c_db_time);
    if(dif<60)//one minute ago
    {
        if(dif<=10){$(".elapsed_time").html("just now");}
        else{var ago = dif;$(".elapsed_time").html(ago+"sec ago");}
    }

    else if(dif<3600)//one hour ago
    {
        var ago = Math.round(dif/60);
        $(".elapsed_time").html(ago+"min ago")
    }
    else if(dif<86400)//one day ie.24hours ago
    {
        var ago = Math.round(dif/3600);
        $(".elapsed_time").html(ago+"hr ago");
    }
    else if(dif<604800)// one week ago
    {
        var ago = Math.round(dif/86400);
        $(".elapsed_time").html(ago+"Day ago");
    }

}
setInterval(ago,1000);//run the script every 1 sec
});
</script>

注意:我到处研究谷歌和堆栈溢出,但找不到适合我的答案。

4

3 回答 3

3

Moment.js是一个很棒的库,可以做这样的事情。

moment(theDate).format('dd-mm-yyyy ; h:m:s');

它还支持从字符串中获取日期:

moment('01-01-2001', 'dd-mm-yyyy');

Moment 还对您手动执行的相对时间语句具有非常强大的处理能力:

moment(theDate).fromNow(); // 11 hours ago, in 3 days, etc.

在 Javascript 中使用本机日期对象可能会变得乏味。一般来说,日期数学很难。Moment 总结了所有的辛勤工作,让你只描述你想要的。

于 2014-05-01T14:40:12.640 回答
1

您可以从时间戳值构造 Date 实例,然后使用各种访问器方法(.getDate().getMonth().getFullYear())根据您的需要格式化日期。

例如:

var savedDate = new Date(db_time);

创建一个 Date 实例。那么有一个函数来产生两位零前缀数字是有帮助的:

function d2( n ) {
  return (n < 10 ? "0" : "") + n;
}

然后可以建立一个 DD-MM-YYYY 日期:

var ddmmyy = d2(savedDate.getDate()) + "-" + d2(savedDate.getMonth() + 1) + "-" + savedDate.getFullYear();

(来自 Date 实例的月份值从 0 到 11,因此需要加 1。)

于 2014-05-01T14:34:24.573 回答
1

javascript Date 对象有一个 toString() 方法,该方法将返回该日期的字符串表示形式。但是,如果您对该字符串的格式不满意,则无法指定用于字符串的特定格式——您必须开始提取日期片段并自己构建字符串。

于 2014-05-01T14:34:50.353 回答