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 相关文章推荐
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
jQuery EasyUI API 中文文档 - Panel面板
Sep 30 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
js同比例缩放图片的小例子
Oct 30 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
全面解析Bootstrap排版使用方法(文字样式)
Nov 30 Javascript
深入理解JavaScript中的对象复制(Object Clone)
May 18 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
Oct 30 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
Dec 27 Javascript
JavaScript实现沿五角星形线摆动的小圆实例详解
Jul 28 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
Oct 23 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 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
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php操作excel文件 基于phpexcel
2010/07/02 PHP
php异常处理方法实例汇总
2015/06/24 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
js 图片等比例缩放代码
2010/05/13 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
如何在Angular.JS中接收并下载PDF
2016/11/26 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
angularjs之$timeout指令详解
2017/06/13 Javascript
jquery 一键复制到剪切板的实例
2017/09/20 jQuery
使用JS获取SessionStorage的值
2018/01/12 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
Windows下安装python2.7及科学计算套装
2015/03/05 Python
Pycharm学习教程(2) 代码风格
2017/05/02 Python
python之PyMongo使用总结
2017/05/26 Python
vue.js实现输入框输入值内容实时响应变化示例
2018/07/07 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
python中if嵌套命令实例讲解
2021/02/25 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
英国网上超市:Ocado
2020/03/05 全球购物
高中运动会入场词
2014/02/14 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
2015年九一八事变纪念日演讲稿
2015/03/19 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis
mysql查看表结构的三种方法总结
2022/07/07 MySQL