如何在JavaScript中获取当前日期?


当前回答

Varun的答案不考虑TimezoneOffset。以下是一个版本:

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

TimezoneOffset是分钟,而Date构造函数需要毫秒,因此乘以60000。

其他回答

Date.prototype.toLocalFullDateStringYYYYMMDDHHMMSS = function () {
if (this != null && this != undefined) {
    let str = this.getFullYear();
    str += "-" + round(this.getMonth() + 1);
    str += "-" + round(this.getDate());
    str += "T";
    str += round(this.getHours());
    str += ":" + round(this.getMinutes());
    str += ":" + round(this.getSeconds());
    return str;
} else {
    return this;
}

function round(n){
    if(n < 10){
        return "0" + n;
    }
    else return n;
}};

这有什么大不了的。。最干净的方法是

var currentDate=新日期().toLocaleString().slice(0,10);

如果在“当前日期”之前,你正在考虑“今天”,那么这个技巧可能对你有用:

> new Date(3600000*Math.floor(Date.now()/3600000))
2020-05-07T07:00:00.000Z

这样,您将获得时间为0:00:00的日期实例。

操作原理很简单:我们获取当前时间戳,并将其除以1天,以毫秒表示。我们会得到一个分数。通过使用Math.floor,我们去掉了分数,所以我们得到了一个整数。现在,如果我们将它乘以一天(同样是以毫秒为单位),我们会得到一个日期时间戳,时间恰好在一天的开始。

> now = Date.now()
1588837459929
> daysInMs = now/3600000
441343.73886916664
> justDays = Math.floor(daysInMs)
441343
> today = justDays*3600000
1588834800000
> new Date(today)
2020-05-07T07:00:00.000Z

干净简单。

如果您想要对日期格式进行更精细的控制,我强烈建议您查看momentjs。非常棒的图书馆-只有5KB。http://momentjs.com/

在澳大利亚,我更喜欢使用此

(new Date()).toISOString().slice(0, 10).split("-").reverse().join("/")