用法 :
- // 格式化时间戳
- dateTime(); //2019-01-04 11:34:27
- dateTime(1580400000000);//1580400000000 2020/1/31 上午 12:00:00
- dateTime(1580400000000 ,'Y 年 M 月 D 日 / h 点 m 分 s 秒') //2019 年 01 月 04 日 / 11 点 36 分 00 秒
- // 指定月份的天数
- dateDays(2020,2); // 29
- // 日期的年月日 时分秒
- dateObject(1580400000000); // { Y:2020, M:1, D:31, h:', m:1, s:2}
- const notNumber = v => typeof v !== "number";
- const isTimeStamp = s => {
- if (isNaN(s)) {
- console.error('时间戳必须是 Number')
- return false
- }
- switch (String(s).length) {
- case 10: {
- return s * 1000
- }
- case 13: {
- return s
- }
- default: {
- console.error('只能格式化 10,13 位时间戳')
- return false
- }
- }
- }
- const dateTime = (s = Date.now(), f = 'Y-M-D h:m:s') => {
- s = isTimeStamp(Number(s))
- if (s) return false
- const scheme = dateObject(s)
- return f.replace(/[YMDhms]/g, function(m) {
- const val = `0${scheme[m]}`
- return val.length === 2 ? val : scheme[m]
- })
- }
- const dateObject = s => {
- // 单独使用时, 去掉注释, 添加初始化和验证
- // s = s || Date.now() //// 或 const dateObject = (s = Date.now()) => {
- // s = isTimeStamp(Number(s))
- // if (s) return false
- const date = new Date(s)
- return {
- Y: date.getFullYear(),
- M: date.getMonth() + 1,
- D: date.getDate(),
- h: date.getHours(),
- m: date.getMinutes(),
- s: date.getSeconds()
- }
- }
- const dateDays = (y, m) => {
- if (notNumber(y)) {
- console.error(` 年必须为 number`)
- return false
- }
- if (notNumber(m)) {
- console.error(` 月必须为 number`)
- return false
- }
- m % 12 || ((y += 1), (m = 1))
- return new Date(y, m, 0).getDate()
- }
来源: http://www.jianshu.com/p/68d3496b9fc8