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 相关文章推荐
LazyLoad 延迟加载(按需加载)
May 31 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
javascript(js)的小数点乘法除法问题详解
Mar 07 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
Dec 16 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
浅谈JavaScript的函数及作用域
Dec 30 Javascript
js处理层级数据结构的方法小结
Jan 17 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
vue项目动态设置页面title及是否缓存页面的问题
Nov 08 Javascript
JavaScript严格模式不支持八进制的问题讲解
Nov 07 Javascript
js 实现验证码输入框示例详解
Sep 23 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
php读取xml实例代码
2010/01/28 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
php格式输出文件var_export函数实例
2014/11/15 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
js特殊字符转义介绍
2013/11/05 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
轻松学习jQuery插件EasyUI EasyUI表单验证
2015/12/01 Javascript
微信小程序  audio音频播放详解及实例
2016/11/02 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
2017/08/25 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
Selenium webdriver添加cookie实现过程详解
2020/08/12 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
会计专业导师推荐信
2014/03/08 职场文书
倡议书范文
2014/04/16 职场文书
班长竞选演讲稿
2014/04/24 职场文书
土木工程求职信
2014/05/29 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书