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

Javascript Date - set just the date, ignoring time?

本文关键字:时间 日期 设置 Date Javascript      更新时间:2023-09-26

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

欢迎意见/建议!!

.toDateString()怎么样?

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

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

在这里查看所有有趣的日期方法: MDN 文档


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

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

的构造函数在解析字符串方面非常聪明(虽然不是没有大量的警告,但这应该非常一致地工作),因此采用旧的 Date 并将其打印到日期而没有任何时间将导致与原始帖子相同的效果。

new Date().toISOString().split('T')[0]

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

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

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

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

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

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

如果日期采用 ISO 字符串格式,则可以使用

'2022-06-01T00:00:00'.split('T')[0]

结果

2022-06-01

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

日期处理不可避免地很棘手。首先,如果您将日期时间作为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" })

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