javascript日期对象格式化为字符串的实现方法


Posted in Javascript onJanuary 14, 2014

javascript提供的日期格式化太简单,一般应用都需要自己实现格式化方法.下面是我想出的一个格式化处理方案,应该是可以满足常用的需求.日期模板中可以使用任意分隔符,还可以使用文字作为分隔符,甚至支持类似yyyyMMdd之类没有分隔符的格式化.

原理:用正则表达式将日期模板中的日期元素[如yyyy, MM, dd]和分隔符拆分成数组,然后用实际的值替换日期元素形成日期字符串.

实现共有两个函数,粘贴可运行.

扩展方式:

示例中只支持了年月日时分秒毫秒的元素,如果需要显示星期则可以在values中添加w = getDay(),将正则表达式修改为y+|M+|d+|H+|m+|s+|S+|w+|[^yMdHmsSw]/g即可.

如果需要将月份或星期显示为全拼或简拼英文,可以在cfg中增加相应配置,我只在cfg中增加了一个示例

使用方式:

var date = new Date();
var str = formatDate(date, 'yyyy年MMM月dd日');
则str的值为2012年七月29日

/** 
* 格式化整数 
* @param number:number 要格式化的整数 
* @param fmt:string 整数格式 
*/ 
function formatNumber(number, fmt) { 
number = number + ''; 
if (fmt.length > number.length) { 
return fmt.substring(number.length) + number; 
} 
return number; 
} 
/** 
* 格式化日期为字符串表示 
* @param datetime:Date 要格式化的日期对象 
* @param format:String 日期格式 
*/ 
function formatDate(datetime, format) { 
var cfg = { 
MMM : ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'], 
MMMM : ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'] 
}, 
values = { 
y : datetime.getFullYear(), 
M : datetime.getMonth(), 
d : datetime.getDate(), 
H : datetime.getHours(), 
m : datetime.getMinutes(), 
s : datetime.getSeconds(), 
S : datetime.getMilliseconds() 
}; 
/*用正则表达式拆分日期格式各个元素*/ 
var elems = format.match(/y+|M+|d+|H+|m+|s+|S+|[^yMdHmsS]/g); 
//将日期元素替换为实际的值 
for (var i = 0; i < elems.length; i++) { 
if (cfg[elems[i]]) { 
elems[i] = cfg[elems[i]][values[elems[i].charAt(0)]]; 
} else if (values[elems[i].charAt(0)]) { 
elems[i] = formatNumber(values[elems[i].charAt(0)], elems[i].replace(/./g, '0')); 
} 
} 
return elems.join(''); 
}
Javascript 相关文章推荐
33种Javascript 表格排序控件收集
Dec 03 Javascript
js保留两位小数使用toFixed实现
Jul 29 Javascript
jquery datatable后台封装数据示例代码
Aug 07 Javascript
javascript DIV实现跟随鼠标移动
Mar 19 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
浅析Vue实例以及生命周期
Aug 14 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
Mar 14 Javascript
vue模仿网易云音乐的单页面应用
Apr 24 Javascript
JavaScript this在函数中的指向及实例详解
Oct 14 Javascript
小程序接入腾讯位置服务的详细流程
Mar 03 Javascript
Vue实现购物小球抛物线的方法实例
Nov 22 Vue.js
vue如何清除浏览器历史栈
May 25 Vue.js
JS获取各种浏览器窗口大小的方法
Jan 14 #Javascript
js鼠标滑轮滚动事件绑定的简单实例(兼容主流浏览器)
Jan 14 #Javascript
Eclipse下jQuery文件报错出现错误提示红叉
Jan 13 #Javascript
节点的插入之append()和appendTo()的用法介绍
Jan 13 #Javascript
移动节点的jquery代码
Jan 13 #Javascript
删除节点的jquery代码
Jan 13 #Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
Jan 13 #Javascript
You might like
php 购物车的例子
2009/05/04 PHP
php实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
php用ini_get获取php.ini里变量值的方法
2015/03/04 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
php session 写入数据库
2016/02/13 PHP
jQuery EasyUI API 中文文档 - Form表单
2011/10/06 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
JavaScript中的原型链prototype介绍
2014/12/30 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
Python爬虫框架scrapy实现的文件下载功能示例
2018/08/04 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
pycharm 实现显示project 选项卡的方法
2019/01/17 Python
Python正则表达式学习小例子
2020/03/03 Python
python操作yaml说明
2020/04/08 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
英国领先的新鲜松露和最好的松露产品供应商:TruffleHunter
2019/08/26 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
手工社团活动方案
2014/02/17 职场文书
质量月活动总结
2014/08/26 职场文书
医院护士党的群众路线教育实践活动对照检查材料思想汇报
2014/10/04 职场文书
公司租房协议书
2014/10/14 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2014年政协工作总结
2014/12/09 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang