原文:
JavaScript Date Now – How to Get the Current Date in JavaScript
,作者:
Vijit Ail
你建立的许多应用程序将有某种日期,可能是资源的创建日期,或者是活动的时间戳。
处理日期和时间戳的格式可能会很累。在本指南中,你将学习如何在 JavaScript 中以各种格式获得当前日期。
JavaScript 的 Date 对象
JavaScript 有一个内置的
Date
对象,用来存储日期和时间,并提供处理它们的方法。
要创建一个新的
Date
对象的实例,请使用
new
关键字。
const date = new Date();
Date
对象包含一个
Number
,代表自纪元(即 1970 年 1 月 1 日)以来的毫秒数。
你可以向
Date
构造函数传递一个日期字符串,为指定日期创建一个对象。
const date = new Date('Jul 12 2011');
要获得当前年份,请使用
Date
对象的
getFullYear()
实例方法。
getFullYear()
方法返回
Date
构造函数中指定日期的年份。
const currentYear = date.getFullYear();
console.log(currentYear); //2020
同样的,也有一些方法可以获得当前月份的日期和当前月份。
const today = date.getDate();
const currentMonth = date.getMonth() + 1;
getDate()
方法返回当前月份的日期(1-31)。
getDate()
方法返回指定日期的月份。关于
getDate()
方法需要注意的一点是,它返回以 0 为索引初始值的值(0-11),其中 0 代表 1 月,11 代表 12 月。因此要加上 1 来使月份的值正常化。
Date now
now()
是
Date
对象的一个静态方法。它返回以毫秒为单位的值,代表从纪元开始所经过的时间。你可以将
now()
方法返回的毫秒数传入
Date
构造函数,以实例化一个新的
Date
对象。
const timeElapsed = Date.now();
const today = new Date(timeElapsed);
格式化日期
你可以使用
Date
对象的方法将日期格式化为多种格式(GMT、ISO 等等)。
toDateString()
方法以人类可读的格式返回日期:
today.toDateString(); // "Sun Jun 14 2020"
toISOString()
方法返回遵循 ISO 8601 扩展格式的日期:
today.toISOString(); // "2020-06-13T18:30:00.000Z"
toUTCString()
方法以 UTC 时区格式返回日期:
today.toUTCString(); // "Sat, 13 Jun 2020 18:30:00 GMT"
toLocaleDateString()
方法以对地域敏感的格式返回日期:
today.toLocaleDateString(); // "6/14/2020"
你可以在
MDN 文档
中找到
Date
方法的完整参考资料。
自定义日期格式化功能
除了上节提到的格式外,你的应用程序可能有不同的数据格式。它可能是
yy/dd/mm
或
yyyy-dd-mm
格式,或类似的格式。
为了解决这个问题,最好是创建一个可重复使用的函数,这样它就可以在多个项目中使用。
因此,在本节中,让我们创建一个实用的函数,它将以函数参数中指定的格式返回日期。
const today = new Date();
function formatDate(date, format) {
formatDate(today, 'mm/dd/yy');
你需要用参数中传递的格式字符串中各自的月、日、年值替换字符串 "mm"、"dd"、"yy"。
要做到这一点,你可以使用
replace()
方法,如下图所示:
format.replace('mm', date.getMonth() + 1);
但这将导致大量的方法链,虽然函数更加灵活了,但是它更加难以维护。
format.replace('mm', date.getMonth() + 1)
.replace('yy', date.getFullYear())
.replace('dd', date.getDate());
你可以通过
replace()
方法来使用正则表达式,而不是使用链式方法。
首先创建一个对象,它将代表子串的键值对和它各自的值。
const formatMap = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
};
接下来,使用正则表达式来匹配和替换这些字符串。
formattedDate = format.replace(/mm|dd|yy|yyy/gi, matched => map[matched]);
完整的函数是这样的:
function formatDate(date, format) {
const map = {
mm: date.getMonth() + 1,
dd: date.getDate(),
yy: date.getFullYear().toString().slice(-2),
yyyy: date.getFullYear()
return format.replace(/mm|dd|yy|yyy/gi, matched => map[matched])
}
你还可以在函数中添加格式化时间戳的能力。
总结
我希望你现在对 JavaScript 中的
Date
对象有了更好的理解。你也可以使用其他第三方库,如
datesj
和
moment
来处理你的应用程序中的日期。
freeCodeCamp 是捐助者支持的 501(c)(3) 条款下具有免税资格的慈善组织(税号:82-0779546)。
我们的使命:帮助人们免费学习编程。我们通过创建成千上万的视频、文章和交互式编程课程——所有内容向公众免费开放——来实现这一目标。学员在世界各地自发成立数千个 freeCodeCamp 学习小组。
所有给 freeCodeCamp 的捐款都将用于我们的教育项目,购买服务器和其他服务,以及聘用员工。
你可以
点击此处免税捐款
。
about:blank 是什么意思
打开 .dat 文件
Node 最新版本
反恶意软件服务
Windows10 产品密钥
Git 切换分支
AppData 文件夹
Windows 10 屏幕亮度
JSON 注释
MongoDB Atlas 教程
Python 字符串转数字
Git 命令
更新 NPM 依赖
谷歌恐龙游戏
CSS 使用 SVG 图片
Python 获取时间
Git Clone 指定分支
JS 字符串反转
React 个人作品网站
媒体查询范围