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


当前回答

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()。

其他回答

尽可能短。

要获得类似“2018-08-03”的格式:

let today=new Date().toISOString().slice(0,10)console.log(今天)

要获得类似“8/3/2018”的格式:

let today=new Date().toLocaleDateString()console.log(今天)

此外,还可以将locale作为参数传递,例如传递给LocaleDateString(“sr”)等。

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

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

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

// Try this simple way

const today = new Date();
let date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
console.log(date);

您可能希望自动检索浏览器的区域设置名称,并将其作为toLocaleString()的第一个参数传递,以便传递其他选项:

//获取区域设置名称函数getLang(){if(navigator.languages!=未定义)返回navigator.languages[0];返回navigator.language;}//获取格式为yyyy-MM-ddThmmss的当前日期时间const time=new Date().toLocaleString(getLang(){小时12:假,年份:'数字',月份:'2-位',天:'2位数',小时:“数字”,minute:“数字”,第二个:“数字”}).replaceAll(“/”,“-”).replaceAll(“:”,“”).replace All(“”,“T”)console.log(“locale:”,getLang())console.log(时间)

结果可能如下:

locale: zh-TW
2022-09-13T171642

当您更改浏览器的区域设置时,时间和日期(如果需要)也会更改。

已缩小2.39KB。一个文件。https://github.com/rhroyston/clock-js只是想帮忙。。。