如何在JavaScript中格式化一个日期

64 阅读1分钟

这里有一个很常见的任务:如何用JavaScript格式化一个日期?

给定一个Date对象。

const date = new Date('July 22, 2018 07:22:13')

有很多方法可以生成一个代表该日期的字符串。

有一些内置的方法。我把它们都列了出来,并附有一个注释,显示了一个输出示例。

date.toString()
// "Sun Jul 22 2018 07:22:13 GMT+0200 (Central European Summer Time)"
date.toTimeString() //"07:22:13 GMT+0200 (Central European Summer Time)"
date.toUTCString() //"Sun, 22 Jul 2018 05:22:13 GMT"
date.toDateString() //"Sun Jul 22 2018"
date.toISOString() //"2018-07-22T05:22:13.000Z" (ISO 8601 format)
date.toLocaleString() //"22/07/2018, 07:22:13"
date.toLocaleTimeString()	//"07:22:13"

当然,你并不局限于这些方法--你可以使用更多的低级方法从一个日期中获得一个值,并构建你想要的任何类型的结果。

date.getDay() //0 (0 means sunday, 1 means monday..)
date.getFullYear() //2018
date.getMonth() //6 (starts from 0)
date.getMilliseconds() //0 (not specified)
date.getTime() //1532236933000
date.getTimezoneOffset() //-120 (will vary depending on where you are and when you check - this is CET during the summer). Returns the timezone difference expressed in minutes

这些都取决于计算机的当前时区。这些方法有相应的UTC版本,它们返回的是UTC值,而不是适应你当前时区的值。

date.getUTCDate() //22
date.getUTCDay() //0 (0 means sunday, 1 means monday..)
date.getUTCFullYear() //2018
date.getUTCMonth() //6 (starts from 0)
date.getUTCHours() //5 (not 7 like above)
date.getUTCMinutes() //22
date.getUTCSeconds() //13
date.getUTCMilliseconds() //0 (not specified)