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 相关文章推荐
Valerio 发布了 Mootools
Sep 23 Javascript
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
jQuery中click事件的定义和用法
Dec 20 Javascript
jQuery中replaceWith()方法用法实例
Dec 25 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
vue双花括号的使用方法 附练习题
Nov 07 Javascript
Node.js搭建小程序后台服务
Jan 03 Javascript
JavaScript中的高级函数
Jan 04 Javascript
vue axios请求频繁时取消上一次请求的方法
Nov 10 Javascript
JS实现求5的阶乘示例
Jan 21 Javascript
小程序实现多列选择器
Feb 15 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 jQuery
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截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
thinkphp分页集成实例
2017/07/24 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
浅谈Javascript鼠标和滚轮事件
2012/06/27 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
JavaScript地图拖动功能SpryMap的简单实现
2013/07/17 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
js制作网站首页图片轮播特效代码
2016/08/30 Javascript
基于JS实现二维码图片固定在右下角某处并跟随滚动条滚动
2017/02/08 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
详解vue+css3做交互特效的方法
2017/11/20 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
简述Vue中容易被忽视的知识点
2019/12/09 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
python中安装模块包版本冲突问题的解决
2017/05/02 Python
Python中生成器和迭代器的区别详解
2018/02/10 Python
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
[原创]Python入门教程1. 基本运算【四则运算、变量、math模块等】
2018/10/28 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
2019/05/16 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python读取Excel表格文件的方法
2019/09/02 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
Python常用类型转换实现代码实例
2020/07/28 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
财务管理专业推荐信
2013/11/19 职场文书
路政管理专业个人自荐信范文
2013/11/30 职场文书
推荐信模板
2014/05/09 职场文书
2015年母亲节寄语
2015/03/23 职场文书
企业团队精神心得体会
2016/01/19 职场文书
微信小程序中wxs文件的一些妙用分享
2022/02/18 Javascript
python pygame 开发五子棋双人对弈
2022/05/02 Python