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在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
Dec 30 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
Feb 12 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
jquery实现未经美化的简洁TAB菜单效果
Aug 28 Javascript
基于javascript实现图片左右切换效果
Jan 25 Javascript
jQuery grep()方法详解及实例代码
Oct 30 Javascript
浅谈vue-router2路由参数注意的问题
Nov 08 Javascript
用js简单提供增删改查接口
May 12 Javascript
electron-vue开发环境内存泄漏问题汇总
Oct 10 Javascript
用JS实现选项卡
Mar 23 Javascript
浅谈vant组件Picker 选择器选单选问题
Nov 04 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实现批量生成App各种尺寸Logo
2015/03/19 PHP
php实现在限定区域里自动调整字体大小的类实例
2015/04/02 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
AngularJs  Creating Services详解及示例代码
2016/09/02 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
python使用xlrd与xlwt对excel的读写和格式设定
2017/01/21 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
Python实现病毒仿真器的方法示例(附demo)
2020/02/19 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python中的With语句的使用及原理
2020/07/29 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
2020/09/28 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
市场部专员岗位职责
2013/11/30 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
黄金酒广告词
2014/03/21 职场文书
媒体宣传策划方案
2014/05/25 职场文书
“四风”问题的主要表现和危害思想汇报
2014/09/19 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2014年党支部书记工作总结
2014/12/04 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
Redis入门基础常用操作命令整理
2022/06/01 Redis