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中文入门指南,翻译加实例,jQuery的起点教程
Jan 13 Javascript
jQuery load方法用法集锦
Dec 06 Javascript
jquery 扑捉回车键事件代码
Apr 24 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
Oct 08 Javascript
bootstrap网页框架的使用方法
May 10 Javascript
Bootstrap输入框组件使用详解
Jun 09 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
Aug 02 Javascript
bootstrap-Treeview实现级联勾选
Nov 23 Javascript
node解析修改nginx配置文件操作实例分析
Nov 06 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
Oct 28 Javascript
javascript数组includes、reduce的基本使用
Jul 02 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
Terran热键控制
2020/03/14 星际争霸
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
php中final关键字用法分析
2016/12/07 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
浅析jQuery EasyUI中的tree使用指南
2014/12/18 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
在Web项目中引入Jquery插件报错的完美解决方案(图解)
2016/09/19 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
uploadify插件实现多个图片上传并预览
2019/09/30 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
在Python下进行UDP网络编程的教程
2015/04/29 Python
python线程、进程和协程详解
2016/07/19 Python
浅谈pandas.cut与pandas.qcut的使用方法及区别
2020/03/03 Python
python将logging模块封装成单独模块并实现动态切换Level方式
2020/05/12 Python
python request 模块详细介绍
2020/11/10 Python
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用详解
2021/01/05 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
纯CSS3实现的井字棋游戏
2020/11/25 HTML / CSS
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
康拓普公司Java笔面试
2016/09/23 面试题
办公室人员先进事迹
2014/01/27 职场文书
初中班主任评语大全
2014/04/24 职场文书
学校评语大全
2014/05/06 职场文书
领导班子四风对照检查材料
2014/09/23 职场文书
作风建设年度心得体会
2014/10/29 职场文书
2015个人简历自我评价语
2015/03/11 职场文书