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 相关文章推荐
js模拟实现Array的sort方法
Dec 11 Javascript
下拉框select的绑定示例
Sep 04 Javascript
javascript面向对象之访问对象属性的两种方式分析
Jan 13 Javascript
jQuery实现html表格动态添加新行的方法
May 28 Javascript
在页面中输出当前客户端时间javascript实例代码
Mar 02 Javascript
JS中改变this指向的方法(call和apply、bind)
Mar 26 Javascript
JavaScript事件代理和委托详解
Apr 08 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
JS仿淘宝搜索框用户输入事件的实现
Jun 19 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
Sep 21 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
详解vue身份认证管理和租户管理
May 25 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
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
使用Appcan客户端自动更新PHP版本号(全)
2015/07/31 PHP
PHP中静态变量的使用方法实例分析
2016/12/01 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
原生javascript实现图片轮播效果代码
2010/09/03 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
微信小程序实现点击返回顶层的方法
2017/07/12 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
[14:21]VICI vs EG (BO3)
2018/06/07 DOTA
python3使用urllib模块制作网络爬虫
2016/04/08 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
python if not in 多条件判断代码
2016/09/21 Python
python利用rsa库做公钥解密的方法教程
2017/12/10 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python 对象和json互相转换方法
2018/03/22 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
python实现扫描局域网指定网段ip的方法
2019/04/16 Python
python的依赖管理的实现
2019/05/14 Python
python 两个数据库postgresql对比
2019/10/21 Python
wxpython布局的实现方法
2019/11/01 Python
django修改models重建数据库的操作
2020/03/31 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
美国NBA官方商店:NBA Store
2019/04/12 全球购物
会计学专业学生的求职信范文
2014/01/27 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
师德先进个人材料
2014/12/20 职场文书
情侣之间的道歉短信
2015/05/12 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书