可以说,JS中所有事物都是对象。这是一门基于对象的语言。里面的字符串,数组,函数,日期乃至数字都是对象。对象实际上就是一种带有属性和方法的数据类型。
Date对象
日期和时间,在Web应用中随处可见,也必不可少。JS脚本内置了Date对象,该对象为我们提供了一些列操作时间和日期的方法。
JS的时间标准
以GTM时间1970年1月1日零点为标准零点,JS脚本中采用UNIX系统存储的时间,存储从标准零点到当前系统时间的毫秒数。注意,JS在读取当前时间时,依赖于客户端的系统时间,如果客户端系统时间有误,可能会带来一定的问题。
构造当前时间对象
构造当前时间对象主要有以下4中方法:
var MyDate = new Date()
var MyDate = new Date(milliseconds)
var MyDate = new Date(string)
var MyDate = new Date(y, m, d, h, min, sec, ms)
以上第一种方法生成一个空的Date对象,默认情况下代表当前客户端时间。
第二种方法传入唯一的参数milliseconds,创建距离标准时间零点milliseconds毫秒的时间对象。
第三种方法传入特定格式的字符串,创建由该字符串指定日期的Date对象。
第四种方法分别传入年、月、日、小时、分钟、秒、毫秒。
获取时间对象信息
获取时间信息常用的方法有:
getTime() //返回标准零点到当前系统时间的毫秒数
getFullYear() //返回四位数的年份
getMonth() //返回月份,注意1月对应数字0。
getDate() //返回日,1号对应数字1。
getHours() //返回二十四小时制的小时数
getMinutes() //返回分钟数
getSeconds() //返回秒数
getMilliseconds() //返回毫秒数
getDay() //返回星期数,注意周日对应数字0,周六对应数字6。
<script language="JavaScript" type="text/javascript">
<!--
function MyTimer() {
var MyDate = new Date();
var milliseconds = MyDate.getTime();
var y = MyDate.getFullYear();
var m = MyDate.getMonth();
var d = MyDate.getDate();
var h = MyDate.getHours();
var min = MyDate.getMinutes();
var s = MyDate.getSeconds();
var ms = MyDate.getMilliseconds();
var week = MyDate.getDay();
var msg = "milliseconds" + " " + milliseconds + "\n" +
"y" + " " + y + "\n" +
"m" + " " + m + "\n" +
"d" + " " + d + "\n" +
"h" + " " + h + "\n" +
"min" + " " + min + "\n" +
"s" + " " + s + "\n" +
"ms" + " " + ms + "\n" +
"week" + " " + week;
alert(msg);
}
-->
</script>
输出如下:
特别注意,getMonth()返回的月份,1月对应数字0,二月三月依次类推。getDay()返回的星期数,周日对应数字0,周一周二依次类推。
设置时间对象信息
和获取当前时间信息对应,要设置当前时间信息,只需要把“获取”方法的get换为set即可。
setTime(ms) //以距离标准零点的毫秒数设置Date对象
setFullYear() //四位数设置年份
setMonth() //设置月份,注意1月对应数字0。
setDate() //设置日,1号对应数字1。
setHours() //设置二十四小时制的小时数
setMinutes() //设置分钟数
setSeconds() //设置秒数
setMilliseconds() //设置毫秒数
setDay() //设置星期数,注意周日对应数字0,周六对应数字6。
示例:
<script language="JavaScript" type="text/javascript">
<!--
function MyTimer() {
var MyDate = new Date();
var y = MyDate.setFullYear(2016);
var m = MyDate.setMonth(0);
var d = MyDate.setDate(31);
var h = MyDate.setHours(23);
var min = MyDate.setMinutes(3);
var s = MyDate.setSeconds(5);
var ms = MyDate.setMilliseconds(344);
var y = MyDate.getFullYear();
var m = MyDate.getMonth();
var d = MyDate.getDate();
var h = MyDate.getHours();
var min = MyDate.getMinutes();
var s = MyDate.getSeconds();
var ms = MyDate.getMilliseconds();
var week = MyDate.getDay();
var msg = "y" + " " + y + "\n" +
"m" + " " + m + "\n" +
"d" + " " + d + "\n" +
"h" + " " + h + "\n" +
"min" + " " + min + "\n" +
"s" + " " + s + "\n" +
"ms" + " " + ms + "\n" +
"week" + " " + week;
alert(msg);
}
-->
</script>
以上代码,我们设置了日期为2016年,1月,31号,此时系统会帮我们算出当前日期对应周日。输出如下:
日期信息转换为字符串
toString() //返回当前时间字符串
toLocaleString() //由客户端日期格式返回日期字符串,注意不是toLocalString()
toUTCString() //以UTC格式返回日期字符串
为了体现出toString和toLocaleString的不同,在试验之前将本地时间显示模式改为了下午 03:20 2016/3/30
。示例:
<script language="JavaScript" type="text/javascript">
<!--
function MyTimer() {
var MyDate = new Date();
var msg = "toString " + MyDate.toString() + "\n" +
"toLocaleString " + MyDate.toLocaleString() + "\n" +
"toUTCString " + MyDate.toUTCString();
alert(msg);
}
-->
</script>
输出为:
再次强调,toLocaleString()方法不要误写为toLocalString()。
Number对象
创建Nubmer对象
var MyDate = new Number() //创建默认值为0的Number对象
var MyDate = new Number(num) //创建值为num的Number对象
MAX_VALUE属性
该属性表示脚本所支持的最大值,我们可以把它以及它的倒数打印出来:
<script language="JavaScript" type="text/javascript">
<!--
function MyNumber() {
var MyData = new Number(Number.MAX_VALUE);
var num = 1/MyData;
var msg = "MAX " + MyData + "\n" +
"1/MAX " + num;
alert(msg);
}
-->
</script>
输出:
MIN_VALUE属性
类比MAX_VALUE属性。
POSITIVE_INFINITY属性
表示正无穷大,注意正无穷大是一个数学上的概念,和脚本支持的最大数MAX_VALUE不是一回事。作为区分我们把它以及其倒数打印出来:
<script language="JavaScript" type="text/javascript">
<!--
function MyNumber() {
var MyData = new Number(Number.POSITIVE_INFINITY);
var num = 1/MyData;
var msg = "+INFINITY " + MyData + "\n" +
"1/+INFINITY " + num;
alert(msg);
}
-->
</script>
输出:
NEGATIVE_INFINITY属性
类比POSITIVE_INFINITY属性。
toString方法
该方法可以将一个Number对象转化为一个String对象,进而进行String对象的一系列操作。例如:
<script language="JavaScript" type="text/javascript">
<!--
function MyNumber() {
var MyData = new Number(56);
MyData = MyData.toString();
MyData = MyData.concat(" Peaples are there in China!");
alert(MyData);
}
-->
</script>
输出: