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 相关文章推荐
百度 popup.js 完美修正版非常的不错 脚本之家推荐
Apr 17 Javascript
Node.js实现简单聊天服务器
Jun 20 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
js实现文字闪烁特效的方法
Dec 17 Javascript
jQuery向webApi提交post json数据
Jan 16 Javascript
DOM事件探秘篇
Feb 15 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
Mar 29 Javascript
js实现延迟加载的几种方法
Apr 24 Javascript
vue中子组件向父组件传递数据的实例代码(实现加减功能)
Apr 20 Javascript
小程序自定义日历效果
Dec 29 Javascript
jQuery轮播图功能制作方法详解
Dec 03 jQuery
JavaScript语法约定和程序调试原理解析
Nov 03 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
解析php入库和出库
2013/06/25 PHP
PHP邮件群发机实现代码
2016/02/16 PHP
类之Prototype.js学习
2007/06/13 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
2014/06/15 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
jQuery 获取遍历获取table中每一个tr中的第一个td的方法
2016/10/05 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
JSON中key动态设置及JSON.parse和JSON.stringify()的区别
2016/12/29 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
vue-cli初始化项目中使用less的方法
2018/08/09 Javascript
Vue-Cli项目优化操作的实现
2019/10/27 Javascript
vue element实现表格合并行数据
2020/11/30 Vue.js
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
使用11行Python代码盗取了室友的U盘内容
2018/10/23 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python实现图像全景拼接
2020/03/27 Python
python numpy实现rolling滚动案例
2020/06/08 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
AC Lens:购买隐形眼镜
2017/02/26 全球购物
Sunglasses Shop丹麦:欧洲第一的太阳镜在线销售网站
2017/10/22 全球购物
司仪主持词两篇
2014/03/22 职场文书
事业单位考核材料
2014/05/21 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
教师节获奖感言
2015/07/31 职场文书