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 相关文章推荐
niceTitle 基于jquery的超链接提示插件
May 31 Javascript
js中的setInterval和setTimeout使用实例
May 09 Javascript
javascript实现根据3原色制作颜色选择器的方法
Jul 17 Javascript
JavaScript入门基础
Aug 12 Javascript
javascript css红色经典选项卡效果实现代码
May 17 Javascript
深入理解Angular4中的依赖注入
Jun 07 Javascript
简单实现vue验证码60秒倒计时功能
Oct 11 Javascript
详解JS数值Number类型
Feb 07 Javascript
JavaScript中常见内置函数用法示例
May 14 Javascript
electron制作仿制qq聊天界面的示例代码
Nov 26 Javascript
Node.js学习教程之Module模块
Sep 03 Javascript
微信小程序云函数添加数据到数据库的方法
Mar 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中的(伪)多线程与多进程
2013/07/01 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
yii用户注册表单验证实例
2015/12/26 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
NodeJS中的MongoDB快速入门详细教程
2016/11/11 NodeJs
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
利用H5api实现时钟的绘制(javascript)
2020/09/13 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python根据路径导入模块的方法
2014/09/30 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
Python标准库shutil用法实例详解
2018/08/13 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
Python如何实现邮件功能
2020/05/27 Python
Pycharm及python安装详细教程(图解)
2020/07/31 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
试述DBMS的主要功能
2016/11/13 面试题
配置管理计划的主要内容有哪些
2014/06/20 面试题
一夜的工作教学反思
2014/02/08 职场文书
班长演讲稿范文
2014/04/24 职场文书
热情服务标语
2014/10/07 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
实现AJAX异步调用和局部刷新的基本步骤
2022/03/17 Javascript
利用Python实时获取steam特惠游戏数据
2022/06/25 Python