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 相关文章推荐
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
原生js模拟淘宝购物车项目实战
Nov 18 Javascript
js图片跟随鼠标移动代码
Nov 26 Javascript
JavaScript保留关键字汇总
Dec 01 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
详解jquery事件delegate()的使用方法
Jan 25 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
Aug 16 Javascript
jQuery实现简单的Ajax调用功能示例
Feb 15 jQuery
vue使用codemirror的两种用法
Aug 27 Javascript
Vuex实现数据增加和删除功能
Nov 11 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面向对象的使用教程 简单数据库连接
2006/11/25 PHP
php生成xml简单实例代码
2009/12/16 PHP
php empty() 检查一个变量是否为空
2011/11/10 PHP
PHP 第一节 php简介
2012/04/28 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
JavaScript 继承使用分析
2011/05/12 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
JavaScript类的写法
2016/09/17 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
layui中table表头样式修改方法
2018/08/15 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
使用vuex解决刷新页面state数据消失的问题记录
2019/05/08 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
小程序Scroll-view上拉滚动刷新数据
2020/06/21 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
Python中__init__和__new__的区别详解
2014/07/09 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
导游词格式
2015/02/13 职场文书
劳动模范获奖感言
2015/07/31 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书