首页 > 代码库 > javascript 的Date 格式化, 模仿shell中date命令的格式
javascript 的Date 格式化, 模仿shell中date命令的格式
原文:javascript 的Date 格式化, 模仿shell中date命令的格式
shell 中显示当前的日期
[root@localhost]$ date '+%Y-%m-%d %H:%M:%S'2015-01-19 16:24:58
把javascript 中的Date object 格式化成适合的字符串,很不方便,模拟shell中的格式
下面先用3段简单的代码来说明模拟函数中用到的特性
字符串的replace
var a = '1234'undefineda.replace('1', 'ab') "ab234"a"1234"b = a.replace('1', 'ab') "ab234"b"ab234"
注意:replace是返回替换后的结果,而不是直接在字符串中更改
Date的函数
d = new Date();Mon Jan 19 2015 17:08:04 GMT+0800 (中国标准时间)d.getFullYear()2015d.getMonth()0d.getDate()19d.getHours()17d.getMinutes()8d.getSeconds()4// 单位是毫秒d.getTime()1421658484111
注意getTime的单位
正则匹配
fmt = '%Y-%m-%d'"%Y-%m-%d"// 要特别注意其中的括号/(%Y)/.test(fmt)trueRegExp.$1"%Y"/%Y/.test(fmt)trueRegExp.$1""// return替换后的结果, 而不是直接替换fmtfmt.replace(RegExp.$1, 'abc')"abc-%m-%d"/(Y/.test(fmt)
模拟的代码
// chrome 按F12,打开drawer测试Date.prototype.format = function(fmt) { //author: meizz var o = { "%m" : this.getMonth()+1+'', //月份 "%d" : this.getDate() + '', //日 "%H" : this.getHours()+'', //小时 "%M" : this.getMinutes()+'', //分 "%S" : this.getSeconds()+'', //秒 //"q+" : Math.floor((this.getMonth()+3)/3), //季度 }; // 年份 2015 if(/(%Y)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"")); // 两位年份 15 if(/(%y)/.test(fmt)) fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(2)); //getTime返回的是以毫秒为单位的,转为秒 if(/(%s)/.test(fmt)) //fmt=fmt.replace(RegExp.$1, this.getTime()/1000); fmt=fmt.replace(RegExp.$1, (this.getTime()+'').slice(0, 10)); for(var k in o) if(new RegExp("("+ k +")").test(fmt)){ fmt = fmt.replace(RegExp.$1, (o[k].length == 2 ? o[k] : '0' + o[k])); } return fmt; } > d = new Date();< Mon Jan 19 2015 16:54:46 GMT+0800 (中国标准时间)> d.format('%Y-%m-%d %H:%M:%S')< "2015-01-19 16:54:46"> d.format('%s')< "1421657686"
如果要用到正式环境,可以把上面的函数,放到一个js文件,然后在html文件中引用
javascript 的Date 格式化, 模仿shell中date命令的格式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。