您好,欢迎访问一九零五行业门户网

JavaScript如何格式化时间的方法

本文为大家分享了javascript时间格式化的方法,分享给大家供大家参考,可以说是web项目中不可或缺的一个javascript类库,它可以帮助你快速的解决客户端编程的许多问题,下面贴出一个用js格式化时间的方法。
date.prototype.format =function(format)
{
var o = {
"m+" : this.getmonth()+1, //month
"d+" : this.getdate(), //day
"h+" : this.gethours(), //hour
"m+" : this.getminutes(), //minute
"s+" : this.getseconds(), //second
"q+" : math.floor((this.getmonth()+3)/3), //quarter
"s" : this.getmilliseconds() //millisecond
}
if(/(y+)/.test(format)) format=format.replace(regexp.$1,
(this.getfullyear()+"").substr(4- regexp.$1.length));
for(var k in o)if(new regexp("("+ k +")").test(format))
format = format.replace(regexp.$1,
regexp.$1.length==1? o[k] :
("00"+ o[k]).substr((""+ o[k]).length));
return format;
}

1
var d =new date().format('yyyy-mm-dd');
以上代码必须先声明,然后在使用。使用方法:
另一种方法:
在javascript之中,日期对象是date,那么如何将一个日期对象按照定制的格式进行输出呢?
可以现告诉你,date对象有有四个内置方法,用于输出为字符串格式,分别为:
1)togmtstring,将一个日期按照gmt格式显示
2)tolocalestring,将一个日期按照本地操作系统格式显示
3)tolocaledatestring,按照本地格式显示一个日期对象的日期部分
4)tolocaletimestring,按照本地格式显示一个日期对象的时间部分
尽管javascript的date对象中内置提供了这些输出为字符串的方法,但是这些字符串不是我们来控制格式的,因此如果我们需要我们自己定制的特殊格式,那么又该怎么办呢?
不用着急,jsjava中提供了专用的类,专门对日期进行指定格式的字符串输出,你可以下载jsjava-2.0.zip,引入其中的src/jsjava/text/dateformat.js,或者直接引入jslib/jsjava-2.0.js,样例代码如下:
var df=new simpledateformat();//jsjava1.0需要使用dateformat对象,不要弄错就是了
df.applypattern("yyyy-mm-dd hh:mm:ss");
var date=new date(2015,12,18,10,59,51);
var str=df.format(date);
document.write(str);//显示结果为:2015-12-18 10:59:51

g era designator [url=]text[/url] ad
y year [url=]year[/url] 1996; 96
m month in year [url=]month[/url] july; jul; 07
w week in year [url=]number[/url] 27
w week in month [url=]number[/url] 2
d day in year [url=]number[/url] 189
d day in month [url=]number[/url] 10
f day of week in month [url=]number[/url] 2
e day in week [url=]text[/url] tuesday; tue
a am/pm marker [url=]text[/url] pm
h hour in day (0-23) [url=]number[/url] 0
k hour in day (1-24) [url=]number[/url] 24
k hour in am/pm (0-11) [url=]number[/url] 0
h hour in am/pm (1-12) [url=]number[/url] 12
m minute in hour [url=]number[/url] 30
s second in minute [url=]number[/url] 55
s millisecond [url=]number[/url] 978

通过上面的例子你可以看出,你需要做的就是指定pattern,那么pattern中yyyy、mm等都表示什么意思呢?如果你学习过java的日期格式化,那么你应该知道,那都是占位符,这些占位符都具有特殊的函数,例如y表示年,yyyy表示四个数字的年份,例如1982,下面列举一些pattern中支持的特殊字符及其含义(下面表格引自java的官方文档,做了适当修改):
还有三种方法也分享给大家:
第一种方法:
// 对date的扩展,将 date 转化为指定格式的string
// 月(m)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(s)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new date()).format("yyyy-mm-dd hh:mm:ss.s") ==> 2006-07-02 08:09:04.423
// (new date()).format("yyyy-m-d h:m:s.s") ==> 2006-7-2 8:9:4.18
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), //季度
"s" : this.getmilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(regexp.$1, (this.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;
}
var time1 = new date().format("yyyy-mm-dd hh:mm:ss");
var time2 = new date().format("yyyy-mm-dd");

第二种方法:
<me:script language="javascript" type="text/javascript"><!--
/**
* 对date的扩展,将 date 转化为指定格式的string
* 月(m)、日(d)、12小时(h)、24小时(h)、分(m)、秒(s)、周(e)、季度(q) 可以用 1-2 个占位符
* 年(y)可以用 1-4 个占位符,毫秒(s)只能用 1 个占位符(是 1-3 位的数字)
* eg:
* (new date()).pattern("yyyy-mm-dd hh:mm:ss.s") ==> 2006-07-02 08:09:04.423
* (new date()).pattern("yyyy-mm-dd e hh:mm:ss") ==> 2009-03-10 二 20:09:04
* (new date()).pattern("yyyy-mm-dd ee hh:mm:ss") ==> 2009-03-10 周二 08:09:04
* (new date()).pattern("yyyy-mm-dd eee hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
* (new date()).pattern("yyyy-m-d h:m:s.s") ==> 2006-7-2 8:9:4.18
*/
date.prototype.pattern=function(fmt) {
var o = {
"m+" : this.getmonth()+1, //月份
"d+" : this.getdate(), //日
"h+" : this.gethours()%12 == 0 ? 12 : this.gethours()%12, //小时
"h+" : this.gethours(), //小时
"m+" : this.getminutes(), //分
"s+" : this.getseconds(), //秒
"q+" : math.floor((this.getmonth()+3)/3), //季度
"s" : this.getmilliseconds() //毫秒
};
var week = {
"0" : "/u65e5",
"1" : "/u4e00",
"2" : "/u4e8c",
"3" : "/u4e09",
"4" : "/u56db",
"5" : "/u4e94",
"6" : "/u516d"
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(regexp.$1, (this.getfullyear()+"").substr(4 - regexp.$1.length));
}
if(/(e+)/.test(fmt)){
fmt=fmt.replace(regexp.$1, ((regexp.$1.length>1) ? (regexp.$1.length>2 ? "/u661f/u671f" : "/u5468") : "")+week[this.getday()+""]);
}
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;
}
var date = new date();
window.alert(date.pattern("yyyy-mm-dd hh:mm:ss"));
// --></mce:script>

第三种方法:
date.prototype.format = function(mask) {
var d = this;
var zeroize = function (value, length) {
if (!length) length = 2;
value = string(value);
for (var i = 0, zeros = ''; i < (length - value.length); i++) {
zeros += '0';
}
return zeros + value;
};
return mask.replace(/"[^"]*"|'[^']*'|/b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hhmstt])/1?|[llz])/b/g, function($0) {
switch($0) {
case 'd': return d.getdate();
case 'dd': return zeroize(d.getdate());
case 'ddd': return ['sun','mon','tue','wed','thr','fri','sat'][d.getday()];
case 'dddd': return ['sunday','monday','tuesday','wednesday','thursday','friday','saturday'][d.getday()];
case 'm': return d.getmonth() + 1;
case 'mm': return zeroize(d.getmonth() + 1);
case 'mmm': return ['jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec'][d.getmonth()];
case 'mmmm': return ['january','february','march','april','may','june','july','august','september','october','november','december'][d.getmonth()];
case 'yy': return string(d.getfullyear()).substr(2);
case 'yyyy': return d.getfullyear();
case 'h': return d.gethours() % 12 || 12;
case 'hh': return zeroize(d.gethours() % 12 || 12);
case 'h': return d.gethours();
case 'hh': return zeroize(d.gethours());
case 'm': return d.getminutes();
case 'mm': return zeroize(d.getminutes());
case 's': return d.getseconds();
case 'ss': return zeroize(d.getseconds());
case 'l': return zeroize(d.getmilliseconds(), 3);
case 'l': var m = d.getmilliseconds();
if (m > 99) m = math.round(m / 10);
return zeroize(m);
case 'tt': return d.gethours() < 12 ? 'am' : 'pm';
case 'tt': return d.gethours() < 12 ? 'am' : 'pm';
case 'z': return d.toutcstring().match(/[a-z]+$/);
// return quoted strings with the surrounding quotes removed
default: return $0.substr(1, $0.length - 2);
}
});
};

以上就是javascript如何格式化时间的方法的详细内容。
其它类似信息

推荐信息