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 相关文章推荐
自动检查并替换文本框内的字符
Jun 30 Javascript
javascript import css实例代码
Jul 18 Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
javascript使用Promise对象实现异步编程
Mar 01 Javascript
jquery解析XML及获取XML节点名称的实现代码
May 18 Javascript
解析利用javascript如何判断一个数为素数
Dec 08 Javascript
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
angular6的table组件开发的实现示例
Dec 26 Javascript
在vue和element-ui的table中实现分页复选功能
Dec 04 Javascript
js布局实现单选按钮控件
Jan 17 Javascript
flexible.js实现移动端rem适配方案
Apr 07 Javascript
vue中使用vue-pdf的方法详解
Sep 05 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
用PHP编程语言开发动态WAP页面
2006/10/09 PHP
PHP simplexml_load_string()函数实例讲解
2019/02/03 PHP
再说AutoComplete自动补全之实现原理
2011/11/05 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
JS实现具备延时功能的滑动门菜单效果
2015/09/17 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
JavaScript操作HTML元素和样式的方法详解
2015/10/21 Javascript
九种原生js动画效果
2015/11/11 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
BackBone及其实例探究_动力节点Java学院整理
2017/07/14 Javascript
Javascript刷新页面的实例
2017/09/23 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
微信小程序完美解决scroll-view高度自适应问题的方法
2020/08/08 Javascript
[00:09]DOTA2全国高校联赛 精彩活动引爆全场
2018/05/30 DOTA
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
用scikit-learn和pandas学习线性回归的方法
2019/06/21 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
Python pip安装第三方库实现过程解析
2020/07/09 Python
用python读取xlsx文件
2020/12/17 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
英国卫浴商店:Ergonomic Design
2019/09/22 全球购物
七夕情人节问候语
2015/11/11 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
Pygame Rect区域位置的使用(图文)
2021/11/17 Python
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技