javascript时间日期函数
更多文章...

javascript提供了Date对象来进行时间和日期的计算。使用时先创建实例,然后用“实例.成员函数”的形式。

Date对象的创建有多种构造函数

1、dateObj=new Date() //当前时间

2、dateObj=new Date(milliseconds) //距离起始时间1970年1月1日的毫秒数

3、dateObj=new Date(datestring) //字符串代表的日期与时间。比如"2012-12-21"、"Jannuary 1, 1998 20:13:15"

4、dateObj=new Date(year, month-1, day, hours, minutes, seconds, microseconds) //参数可以不写全,不写则默认为0。Js的月份数值,一月用0表示,所以此处减一再传入。如果输入值超出合理范围,函数会自动折算。

下面是Date对象的成员函数


获取类成员函数:
getDate() 函数 -- 返回日值(1-31)
getDay()函数 -- 返回星期值(0-6)
getFullYear() 函数 -- 返回四位数年份值
getHours()函数 -- 返回小时值(0-23)
getMilliseconds() 函数 -- 返回时间date对象的当前毫秒值(0-999)
getMinutes() 函数 -- 返回分钟值(0-59)
getMonth() 函数 -- 返回月份值(0-11)
getSeconds() 函数 -- 返回秒值(0-59)
getTime() 函数 -- 返回1970年1月1日零点以来的毫秒数,即毫秒时间戳。是UTC数值。
getYear() 函数 -- 返回年份值(真实年份减去1900)

计算两个日期时间的差:
d1=new Date(y1,m1-1,d1);
d2=new Date(y2,m2-1,d2);
相差天数:(d2.getTime()-d1.getTime())/86400000;


设置类成员函数: 多个参数时可以不写全,不写默认为0。

setDate(thedate) 函数 -- 设置月份的日值(1~31)
setFullYear(year,month,thedate) 函数 -- 设置的年份、月份(0~11)和日值
setHours(hours,minutes,seconds,milliseconds) 函数 -- 设置小时,分钟,秒和毫秒
setMilliseconds() 函数 -- 设置毫秒数
setMinutes(minutes,seconds,milliseconds) 函数 -- 设置分钟,秒,毫秒
setMonth(month,thedate) 函数 -- 设置月份,天
setSeconds() 函数 -- 设置秒
setTime() 函数 -- 使用1970年以来的毫秒数设置date对象
setYear() 函数 -- 设置年份(真实年份减去1900)


另参见:js时区相关函数

时间日期加减某个数值
先用获取类成员函数获取分量,加上数值后,再调用相应的设置类成员函数即可。数值若超出范围,会自动调整。


转化类成员函数:
toLocaleString() 函数 -- 返回本地时间字符串表示
toLocaleDateString函数 -- 返回日期部分的本地时间字符串
toLocaleTimeString函数 -- 返回时间部分的本地时间字符串
示例:toLocaleTimeString("zh",{hour12: false}),显示12进制时间

以下几个成员函数返回utc时间:
toString()?
toDateString()
toTimeString()



以下为一些静态函数:

日期解析函数Date.parse?比如:

var ms=Date.parse("Jul 8, 2005")

解析一个日期的字符串,并返回该日期距1970年1月1日午夜以来的毫秒数

时区相关的部份请看javascript时区函数




计时

console.time和console.timeEnd

console.time和console.timeEnd是用来测试一段js代码执行时间的。比如:

console.time('tag');

//需计时的代码段

console.timeEnd('tag');
此二函数只能输出到控制台。


performance.now()

测试执行时间

t0 = performance.now();

//执行代码

console.log(performance.now()- t0);
此函数取时精度较高。但老的浏览器可能不支持。

Date.now
也可以使用Date.now()来计时,兼容性好一些,但测试在ie8上还是不行。如果使用new Date().getTime()则无兼容性问题。




© time.org.cn