按格式输出时间

63 篇文章 0 订阅
9 篇文章 0 订阅

需求
按所给的时间格式输出指定的时间
格式说明
对于 2014.09.05 13:14:20
yyyy: 年份,2014
yy: 年份,14
MM: 月份,补满两位,09
M: 月份, 9
dd: 日期,补满两位,05
d: 日期, 5
HH: 24制小时,补满两位,13
H: 24制小时,13
hh: 12制小时,补满两位,01
h: 12制小时,1
mm: 分钟,补满两位,14
m: 分钟,14
ss: 秒,补满两位,20
s: 秒,20
w: 星期,为 [‘日’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’] 中的某一个,本 demo 结果为 五

IN

formatDate(new Date(1409894060000), ‘yyyy-MM-dd HH:mm:ss 星期w’)

OUT

2014-09-05 13:14:20 星期五

分析

  • 注意时间对象月份范围是0-11,星期则是0-6
  • 用replace正则匹配每一个格式,用函数参数处理
  • 将无需补零的格式作为对象的键,通过时间对象方法求得到其对应的值

解法

function formatDate(d, s) {
    // 构造单个基准对象
    var t = {
        yyyy : d.getFullYear(),
        yy : d.getFullYear % 100,
        M : d.getMonth() + 1,
        d : d.getDate(),
        H : d.getHours(),
        h : d.getHours() % 12,
        m : d.getMinutes(),
        s : d.getSeconds(),
        w : ['日', '一', '二', '三', '四', '五', '六'][d.getDay()]
    }

    // 补零助手函数
    function pad(n) {
        return n < 10 ? '0' + +n : n;
    }

    // 格式化
    return s.replace(/([(yy)|MmdhHmsw]+)/g, function (f) {
        if(f.length % 2 == 0 && f.indexOf('yy') == -1){
            return pad(t[f[0]])
        }
        return t[f]
    })
}

var d = new Date(2018, 0, 0, 0, 0, 0)
var s = 'yyyy-MM-dd hh:mm:ss 星期w'
console.log(formatDate(d, s))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值