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 相关文章推荐
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
网站404页面3秒后跳到首页的实例代码
Aug 16 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
jQuery提示效果代码分享
Nov 20 Javascript
JavaScript中pop()方法的使用教程
Jun 09 Javascript
使用jquery插件qrcode生成二维码
Oct 22 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
利用vue实现模态框组件
Dec 19 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
ionic2 tabs 图标自定义实例
Mar 08 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
vue 出现data-v-xxx的原因及解决
Aug 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 curl实现抓取302跳转后页面的示例
2014/07/04 PHP
php文件读取方法实例分析
2015/06/20 PHP
php指定长度分割字符串str_split函数用法示例
2017/01/30 PHP
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
js实现遮罩层弹出框的方法
2015/01/15 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
JS中闭包的经典用法小结(2则示例)
2016/12/28 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
解决vue初始化项目一直停在downloading template的问题
2020/11/09 Javascript
[57:36]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第三场 2月1日
2021/03/11 DOTA
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
用python生成1000个txt文件的方法
2018/10/25 Python
Python将string转换到float的实例方法
2019/07/29 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
带你认识HTML5中的WebSocket
2015/05/22 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
程序员机试试题汇总
2012/03/07 面试题
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
员工安全生产承诺书
2014/05/22 职场文书
大学生求职信范文
2014/05/24 职场文书
门卫管理制度范本
2015/08/05 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
FP-growth算法发现频繁项集——发现频繁项集
2021/06/24 Python
MySQL 开窗函数
2022/02/15 MySQL
python在package下继续嵌套一个package
2022/04/14 Python