JavaScript日期格式化函数

本文介绍了一个JavaScript日期格式化函数,该函数通过扩展Date对象来实现类似Java中SimpleDateFormat的功能,可以将日期转换为多种格式的字符串,如年、月、日、时、分、秒等。

JavaScript日期格式化函数

该日期格式化函数是为了达到像Java提供的SimpleDateFormat类一样的功能,对Date的扩展,将 Date 转化为指定格式的string类型变量

  • 年(y)
  • 月(M)
  • 日(d)
  • 24小时(H)
  • 12小时(h)
  • 分(m)
  • 秒(s)
  • 周(E)
  • 季度(q)
  • 毫秒(S)

目录

代码

Date.prototype.format = function(fmt) {
var o = {
    'M+' : this.getMonth() + 1,
    // 月份
    'd+' : this.getDate(),
    // 日
    'h+' : this.getHours() % 12 == 0 ? 12 : this.getHours() % 12,
    // 小时
    'H+' : this.getHours(),
    // 小时
    'm+' : this.getMinutes(),
    // 分
    's+' : this.getSeconds(),
    // 秒
    'q+' : Math.floor((this.getMonth() + 3) / 3),
    // 季度
    'S' : this.getMilliseconds()
// 毫秒
};
var week = {
    '0' : '/u65e5',
    '1' : '/u4e00',
    '2' : '/u4e8c',
    '3' : '/u4e09',
    '4' : '/u56db',
    '5' : '/u4e94',
    '6' : '/u516d'
};
if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '')
            .substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(fmt)) {
    fmt = fmt
            .replace(
                    RegExp.$1,
                    ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '/u661f/u671f'
                            : '/u5468')
                            : '')
                            + week[this.getDay() + '']);
}
for ( var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
                : (('00' + o[k]).substr(('' + o[k]).length)));
    }
}
return fmt;
};

用法

  • 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符
  • 年(y)可以用 1-4 个占位符
  • 毫秒(S)只能用 1 个占位符(是 1-3 位的数字)

demo

  • (new Date()).format(“yyyy-MM-dd hh:mm:ss.S”) ==> 2015-09-11 08:09:04.423

  • (new Date()).format(“yyyy-MM-dd E HH:mm:ss”) ==> 2015-09-11 五 08:09:04

  • (new Date()).format(“yyyy-MM-dd EE hh:mm:ss”) ==> 2015-09-11 周五 08:09:04

  • (new Date()).format(“yyyy-MM-dd EEE hh:mm:ss”) ==> 2015-09-11 星期五 08:09:04

  • (new Date()).format(“yyyy-M-d h:m:s.S”) ==> 2015-09-11 8:9:4.18

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值