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 相关文章推荐
ie 调试javascript的工具
Apr 29 Javascript
微博@符号的用户名提示效果。(想@到谁?)
Nov 05 Javascript
javascript中的window.location.search方法简介
Sep 02 Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
Jan 23 Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 Javascript
AngularJS ui-router刷新子页面路由的方法
Jul 23 Javascript
15分钟深入了解JS继承分类、原理与用法
Jan 19 Javascript
JavaScript变量作用域及内存问题实例分析
Jun 10 Javascript
vuex state中的数组变化监听实例
Nov 06 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
使用Mock.js生成前端测试数据
Dec 13 Javascript
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
新闻分类录入、显示系统
2006/10/09 PHP
php Smarty初体验二 获取配置信息
2011/08/08 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
filemanage功能中用到的lib.js
2007/04/08 Javascript
javascript 建设银行登陆键盘
2008/06/10 Javascript
Ruffy javascript 学习笔记
2009/11/30 Javascript
js转义字符介绍
2013/11/05 Javascript
JavaScript实现的使用键盘控制人物走动实例
2014/08/27 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
通过实例了解JS 连续赋值
2019/09/24 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
Python中的urllib模块使用详解
2015/07/07 Python
python中类变量与成员变量的使用注意点总结
2017/04/29 Python
python实现简易云音乐播放器
2018/01/04 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python控制台实现tab补全和清屏的例子
2019/08/20 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
python plotly画柱状图代码实例
2019/12/13 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
英国在线珠宝店:The Jewel Hut
2017/03/20 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
银行存款证明样本
2014/01/17 职场文书
2014迎接教师节演讲稿
2014/09/10 职场文书
副总经理岗位职责范本
2014/09/30 职场文书
党的群众路线教育实践活动党员个人整改措施
2014/10/27 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
JavaScript 实现页面滚动动画
2021/04/24 Javascript