在前端开发中,经常会遇到需要实时显示时间的情况。于是封装了常用的用于刷新时间的方法,便于以后开发。
var myVar = setInterval(function(){ myTimer() }, 1);//每毫秒刷新一次时间
// currTime 为显示时间的元素的id
//当前输出方式为:xxxx-xx-xx hh:mm:ss.ms(年-月-日 时:分:秒.毫秒)
function myTimer() {
var d = new Date();
var ms = d.getMilliseconds();//获取当前时间的毫秒
document.getElementById("currTime").innerHTML =
dateFormat("yyyy")+"-"+dateFormat("MM")+"-"+dateFormat("dd")+" "+
dateFormat("h")+":"+dateFormat("m")+":"+dateFormat("s") + "." + ms;
// console.log("----time="+document.getElementById("currTime").innerHTML);//打印时间
}
//给Date对象添加Format方法
//fmt为要获取事件单位的格式,如需要获取四位数的年份,则为dateFormat("yyyy")
function dateFormat(fmt,_date) {
var weekdays = {
Chinese: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
English: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
};
var _dd = typeof(_date)=="undefined"?new Date():_date;
var o = {
"y+": _dd.getFullYear(),//年
"M+": _dd.getMonth() + 1,//月
"d+": _dd.getDate(),//日
"w": weekdays["Chinese"][_dd.getDay()],//星期
"h+": _dd.getHours(),//时
"m+": _dd.getMinutes(),//分
"s+": _dd.getSeconds(),//秒
};
if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (_dd.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
若有更好的方法,还望大家踊跃留言讨论!