说起时间,首先要确定标准,即采用的是哪个时间标准。本地时间,北京时间,格林尼治时间(Greenwich Mean Time,GMT),还是 世界标准时间(Coordinated Universal Time,UTC)。UTC的时间就是等于GMT的时间。
在JavaScript中,通过new Date()创建的时间,不管给Date传入的参数是 毫秒数 还是 时间字符串(未指定GMT) 或者不传参数,都被当做本地时间以本地时间的形式表示。
以下是时间标准的测试用例:
var date = new Date(); //由于本地时间为北京时间,比格林尼治时间快8小时,因此记作 GMT+0800 console.log('date: ' + date.toString()); //date: Mon Dec 26 2011 23:13:31 GMT+0800 var utc = date.toUTCString() console.log('utc: ' + utc); //utc: Mon, 26 Dec 2011 15:13:31 GMT var utcInitTime = new Date(utc); console.log('utcInitTime: ' + utcInitTime.toString()); //utcInitTime: Mon Dec 26 2011 23:13:31 GMT+0800 var index = utc.indexOf('GMT'); var utcInitTimeNoGMT = new Date(utc.substring(0, index)); console.log('utcInitTimeNoGMT: ' + utcInitTimeNoGMT); //utcInitTimeNoGMT: Mon Dec 26 2011 15:13:31 GMT+0800 //getTime方法返回指定的日期和时间距 1970 年 1 月 1 日午夜(GMT 时间)之间的毫秒数。 var gt = date.getTime(); //当前时间为: Mon Dec 26 2011 23:13:31 GMT+0800 console.log('gt: ' + gt); //gt: 1324912411597 var gtInitTime = new Date(gt); console.log('gtInitTime: ' + gtInitTime.toString()); //gtInitTime: Mon Dec 26 2011 23:13:31 GMT+0800 //方法getTimezoneOffset: //返回 格林威治时间 - 本地时间 的差值,以分钟为单位,可能为负数。 var timezoneOffset = date.getTimezoneOffset() * 60 * 1000; console.log('timezoneOffset: ' + timezoneOffset); //timezoneOffset: -28800000 //将 本地时间毫秒数 转换为 UTC时间毫秒数 var gtUTC = gt + timezoneOffset; console.log('gtUTC: ' + gtUTC); //gtUTC: 1324883611597 var gtUTCInitTime = new Date(gtUTC); console.log('gtUTCInitTime: ' + gtUTCInitTime); //gtUTCInitTime: Mon Dec 26 2011 15:13:31 GMT+0800
有关JavaScript时间处理的函数在w3school有介绍:http://www.w3school.com.cn/js/jsref_obj_date.asp