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


当前回答

基础知识

如果您对2016年1月24日星期日21:23:07 GMT+0100(CET)格式感到满意,您可以使用以下代码:

var today = new Date();

Date.product.toLocaleDateString()

如果要格式化输出,请考虑使用Date.protype.toLocaleDateString():

var today = new Date().toLocaleDateString('de-DE', {     
    weekday: 'long', 
    year: 'numeric',
    month: 'long',
    day: 'numeric'
});

如果您今天(1月24日)执行了该代码ᵗʰ,2016),它将产生字符串Sonntag,24。2016年1月。但是,较旧的浏览器可能会产生不同的结果,例如IE<11不支持区域设置或选项参数。

正在自定义

如果Date.product.toLocaleDateString()不够灵活,无法满足您可能需要的任何需求,您可能需要考虑创建一个自定义Date对象,如下所示:

var DateObject = (function() {
    var monthNames = [
      "January", "February", "March",
      "April", "May", "June", "July",
      "August", "September", "October",
      "November", "December"
    ];
    var date = function(str) {
        this.set(str);
    };
    date.prototype = {
        set : function(str) {
            var dateDef = str ? new Date(str) : new Date();
            this.day = dateDef.getDate();
            this.dayPadded = (this.day < 10) ? ("0" + this.day) : "" + this.day;
            this.month = dateDef.getMonth() + 1;
            this.monthPadded = (this.month < 10) ? ("0" + this.month) : "" + this.month;
            this.monthName = monthNames[this.month - 1];
            this.year = dateDef.getFullYear();
        }
    };
    return date;
})();

如果您今天(1月24日)包含了该代码并执行了新的DateObject()ᵗʰ,2016),它将生成具有以下财产的对象:

day: 24
dayPadded: "24"
month: 1
monthPadded: "01"
monthName: "January"
year: 2016

其他回答

如果您正在使用jQuery。试试这一行:

$.datepicker.formatDate('dd/mm/yy', new Date());

以下是格式化日期的惯例

d-月份的日期(无前导零)dd-月份的日期(两位数)o-一年中的某一天(无前导零)oo-一年中的一天(三位数)D-天名称缩写DD-日名称长m-一年中的月份(无前导零)mm-一年中的月份(两位数)M-月名缩写MM-月份名称长y-年(两位数)yy-年(四位数)

以下是jQuery日期选择器的参考

试用Date.js

毫秒

date.js.millisecond(); // 0.00

date.js.second(); // 58

分钟

date.js.minute(); // 31

小时

date.js.hour(); // 6  (PM)

Days

date.js.day(); // Monday

date.js.week(); // (Week Of the Month / WOM) => 2

date.js.month(); // (Month) => November

TLM(三字母月)

date.js.tlmonth(); // (Month) => Dec

Year

date.js.year(); // (Year / String: "") => "2021"

date.js.season(); // (Fall / Season: seasons) => "fall"

当前时间(AM/PM)

date.js.time(); // (Time / Zone: "PDT/EDT etc.") => 10:04 AM

如果您只需要字符串表示,那么只需使用:

Date();

大多数其他答案都提供了日期和时间。如果你只需要日期。

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

输出

[ '2021-02-08', '06:07:44.629Z' ]

如果要使用/format,请使用replaceAll。

new Date().toISOString().split("T")[0].replaceAll("-", "/")

如果您需要其他格式,那么最好使用momentjs。

TL;博士

只有当您需要本地计算机(客户端)上的当前时间时,这里找到的大多数答案才是正确的,而本地计算机(客户机)是一个通常不可靠的源(它可能与其他系统不同)。

可靠的来源包括:

Web服务器的时钟(但确保已更新)时间API和CDN

细节

在Date实例上调用的方法将返回一个基于计算机本地时间的值。

更多详细信息可以在“MDN web docs”:JavaScript Date对象中找到。

为了方便您,我从他们的文档中添加了一条相关注释:

(…)获取日期和时间或其组件的基本方法都在本地(即主机系统)时区和偏移中工作。

提到这一点的另一个来源是:JavaScript日期和时间对象

需要注意的是,如果某人的时钟关闭了几个小时,或者他们在不同的时区,则Date对象将创建与您自己计算机上创建的时间不同的时间。

您可以使用的一些可靠来源是:

web服务器的时钟(首先检查是否正确设置)时间API和CDN:https://timezonedb.com/apihttp://worldtimeapi.orghttp://worldclockapi.comhttp://www.geonames.org/export/ws-overview.html其他相关API:https://www.programmableweb.com/category/time/api

但是,如果准确度对您的用例并不重要,或者如果您只需要日期与本地机器的时间相关,那么您可以安全地使用Javascript的date基本方法,如date.now()。