小机灵鬼|JavaScript 中获取当前日期,前端:如何在

【小机灵鬼|JavaScript 中获取当前日期,前端:如何在】在我们开发的许多应用程序都会用到某种日期功能 , 无论是内容的创建日期还是活动的时间戳等等 。
处理日期和时间戳格式可能会很麻烦 。 在本文中 , 我们将一起学习如何在JavaScript中以各种格式获取当前日期 。
JavaScript的Date对象JavaScript具有一个内置Date对象 , 该对象存储日期和时间并提供相应的处理日期和时间的方法 。
要创建Date对象的新实例 , 请使用new关键字:
constdate=newDate();该Date对象包含一个Number , 表示从新纪元(即1970年1月1日)起经过的毫秒数 。
您可以将日期字符串传递给Date构造函数以创建指定日期的对象:
constdate=newDate('Jul122011');要获取当前年份 , 可以使用Date对象的getFullYear()实例方法 。 getFullYear()方法返回日期对应的年份:
constcurrentYear=date.getFullYear();console.log(currentYear);//2020同样 , 有一些方法可以获取当月的当前日期和当前的月份:
consttoday=date.getDate();constcurrentMonth=date.getMonth()+1;getDate()方法返回当月的当前日期(1-31) 。
getMonth()方法返回指定日期的月份 。 需要注意的一点是 , getMonth()方法返回的是索引值(0-11) , 其中0表示一月 , 11表示十二月 。 因此 , 加1可以使月份的值标准化 。
Date.now()now()是Date对象的静态方法 。 它返回以毫秒为单位的值 , 该值表示自纪元以来经过的时间 。 您可以将now()方法返回的毫秒数传递给Date构造函数以实例化新的Date对象:
consttimeElapsed=Date.now();consttoday=newDate(timeElapsed);日期格式化我们可以使用Date对象的方法将日期格式化为多种格式(GMT , ISO等) 。
toDateString()方法以人类可读的格式返回日期:
today.toDateString();//"SunJun142020"toISOString()方法返回遵循ISO8601扩展格式的日期:
today.toISOString();//"2020-06-13T18:30:00.000Z"toUTCString()方法以UTC时区格式返回日期:
today.toUTCString();//"Sat,13Jun202018:30:00GMT"toLocaleDateString()方法以对地区敏感的格式返回日期:
today.toLocaleDateString();//"6/14/2020"我们可以在MDN文档中找到Date有关方法的完整参考 。
自定义日期格式化工具除了上一节中提到的格式外 , 我们开发应用程序可能具有不同的数据格式 。 它可以是yy年mm月dd日或yyyy-dd-mm格式 , 或者类似的东西 。
为了解决这个问题 , 最好创建一个可重用的日期格式化函数 , 以便可以在多个项目中使用它 。
因此 , 在本节中 , 我们会创建一个函数 , 该函数将接收时间格式作为参数 , 返回对应格式的日期:
consttoday=newDate();functionformatDate(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() 。
首先创建一个对象 , 该对象将代表子字符串的键值对及其各自的值:
constformatMap={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]);完整的功能如下所示:


推荐阅读