Javascript日期 - 只设置日期,忽略时间?

时间:2012-08-07 14:08:17

标签: javascript date

我有一堆对象,每个对象都有一个时间戳,我希望按日期分组到JSON对象中。最终目标是这样的:

myObject = {
    "06/07/2012" : [ 
        {
            "timestamp" : "07/06/2012 13:30",
            ...
        },
        {
            "timestamp" : "07/06/2012 14:00",
            ...
        }
    ],
    "07/07/2012 [...]
}

要获取日期,我正在测试每个时间戳对象并使用:

var visitDate = new Date(parseInt(item.timestamp, 10));
visitDate.setHours(0);
visitDate.setMinutes(0);
visitDate.setSeconds(0);

..然后我用它来存储作为JSON对象的名称。这看起来很混乱,我确信应该有一种更简单的做事方式。

建议/建议欢迎!!

3 个答案:

答案 0 :(得分:40)

.toDateString()怎么样?

或者,使用.getDate().getMonth().getYear()

在我看来,如果你想按日期分组,你只想访问日期而不是设置日期。通过一些设置方式访问日期字段,您可以比较它们并将它们组合在一起,不是吗?

在此处查看所有有趣的日期方法:MDN Docs


编辑:如果您希望将其保留为日期对象,请执行以下操作:

var newDate = new Date(oldDate.toDateString());

Date的构造函数非常聪明地解析字符串(虽然不是没有大量的警告,但这应该非常一致),所以使用旧日期并将其打印到没有任何时间的日期将导致相同的效果曾在原帖中。

答案 1 :(得分:9)

如果您不介意创建额外的日期对象,可以尝试:

var tempDate = new Date(parseInt(item.timestamp, 10));
var visitDate = new Date (tempDate.getUTCFullYear(), tempDate.getUTCMonth(), tempDate.getUTCDate());

我做了一些非常相似的事情,以便在没有时间的情况下获得当月的日期。

答案 2 :(得分:1)

var today = new Date();
var year = today.getFullYear();
var mes = today.getMonth()+1;
var dia = today.getDate();
var fecha =dia+"-"+mes+"-"+year;
console.log(fecha);