43

我有一堆对象,每个对象都有一个时间戳,我想按日期将它们分组到一个 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 对象的名称。它看起来很乱,我相信应该有一种更简单的做事方式。

欢迎建议/建议!

4

6 回答 6

77

怎么样.toDateString()

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

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

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


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

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

Date 的构造函数在解析字符串方面非常聪明(尽管并非没有大量警告,但这应该可以非常一致地工作),因此使用旧的 Date 并将其打印到没有任何时间的日期将产生与您在原帖。

于 2012-08-07T14:11:16.300 回答
11

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

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

我做了一些非常相似的事情来获得没有时间的当月日期。

于 2012-08-07T14:16:32.387 回答
6

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);

于 2020-08-05T23:46:25.497 回答
1

let date = new Date((new Date("07/06/2012 13:30")).toDateString())
console.log(date)

于 2020-12-24T03:15:08.237 回答
0

只需将本地日期字符串通过“/”拆分为数组并相应地排列它们,非常简单。

var date=new Date();
var datearray=date.toLocaleString().split("/");
var sqldate= datearray[2].slice(0,4)+"-"+(datearray[0]<=9?"0"+datearray[0]:datearray[0])+"-"+(datearray[1]<=9?"0"+datearray[1]:datearray[1]);
于 2022-01-18T15:11:40.593 回答
0

日期处理不可避免地很棘手。首先,如果您将日期时间作为 UTC ISO 字符串(“yyyy-MM-dd hh:mm:ss.000Z”)发送,将会省去很多麻烦。如果您将日期存储为字符串,请将它们存储为 ISO 字符串。用斜杠解析日期取决于语言环境,因此容易出错。(欧洲人把天放在首位,美国人把月放在首位。)

要从日期时间 ISO 字符串中获取日期字符串,请使用myDatetimeString.substring(0,10). 要从日期字符串中获取日期对象,只需添加零...

myUtcMidnightDateObject = new Date( myDateString + ' 00:00:00Z' )

要格式化您的 UTC 午夜日期对象,请使用toLocaleString()UTC 选项...

myFormattedDate = myUtcMidnightDateObject.toLocaleDateString({},{ timeZone: "UTC" })

更多细节可以在这里找到。

于 2021-12-08T15:46:21.380 回答