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 相关文章推荐
基于jquery的高性能td和input切换并可修改内容实现代码
Jan 09 Javascript
用C/C++来实现 Node.js 的模块(二)
Sep 24 Javascript
2种jQuery 实现刮刮卡效果
Feb 01 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
Dec 08 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
JavaScript中Require调用js的实例分享
Oct 27 Javascript
利用JS动态生成隔行换色HTML表格的两种方法
Oct 09 Javascript
Vue起步(无cli)的啊教程详解
Apr 11 Javascript
详解vue中在父组件点击按钮触发子组件的事件
Nov 13 Javascript
js实现头像上传并且可预览提交
Dec 25 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
人尽可用的Windows技巧小贴士之下篇
2007/03/22 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
PHP实现基于栈的后缀表达式求值功能
2017/11/10 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
初试jQuery EasyUI 使用介绍
2010/04/01 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
三种检测iPhone/iPad设备方向的方法
2014/04/23 Javascript
jQuery中:gt选择器用法实例
2014/12/29 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
node+express+ejs使用模版引擎做的一个示例demo
2017/09/18 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
详细探究Python中的字典容器
2015/04/14 Python
使用Python3编写抓取网页和只抓网页图片的脚本
2015/08/20 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
python中可以声明变量类型吗
2020/06/18 Python
python re.match()用法相关示例
2021/01/27 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
在线学习西班牙语、法语或其他语言:Babbel.com
2018/02/07 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
小学三年级学生评语
2014/04/22 职场文书
小学课外阅读总结
2014/07/09 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
自愿离婚协议书2015
2015/01/26 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL