Date对象用于处理日期和时间。但是DOM里并没有现成的Date对象,而是需要我们自己在需要时创建Data对象。
语法:
var myDate = new Date();
变量myDate就是一个Date对象。
var year = myDate.getFullYear(); //四位年份,2020
var month = myDate.getMonth(); // 0~11,0表示1月份
var date = myDate.getDate(); //日期,1-31
var day = myDate.getDay(); //星期几,0~6
var hours = myDate.getHours(); // 时,0~23
var minutes = myDate.getMinutes(); //分,0~59
var seconds = myDate.getSeconds(); //秒,0~59
创建具有指定日期和时间的Date对象:
语法:
var myDate = new Date(milliseconds); //毫秒
var myDate = new Date(dateString); // 日期字符串
var myDate = new Date(year,month,day,hours,minutes,seconds,milliseconds); //
比如:
var d2 = new Date(2020,12,22); // 2020年12月22日
var d3 = new Date(2020,12,22,10,58,0); //2020年12月22日10:58:00
设置和编辑日期与时间:
var myDate = new Date();
myDate.setDate(15); //
这段代码,先创建了myDate对象,接着就把日子换成了15日。
var myDate = new Date();
myDate.setDate(myDate.getDate() + 33);
这段代码,是把当天日期往后推迟33天的日期。
Math对象:
与Date对象不同,Math对象不需要创建就可以使用。
方法 | 描述 |
ceil(n) | 返回n向上取证到最近的整数 |
floor(n) | 返回n向下取整到最近的整数 |
max(a,b,c) | 返回最大值 |
min(a,b,c) | 返回最小值 |
round(n) | 返回n四舍五入到最近的整数 |
random() | 返回一个0到1之间的随机数 |
取整:
var num1 = 12.55;
var num2 = 12.45;
Math.floor(num1); // 12
Math.ceil(num1); // 13
Math.round(num1); // 13
Math.round(num2); // 12
floor是向下取整,ceil是向上取整,round是四舍五入。
最大值和最小值:
var value1 = 23;
var value2 = 27;
var value3 = 31;
var value4 = 19;
Math.max(value1,value2,value3,value4); // 31
Math.min(value,value2,value3); //23
生成随机数:
用Math.random()方法可以生成0和1之间的一个随机数。更为常见的情况是,我需要需要获得0到100之间的随机数。
我们可以把Math.random()方法包含在一个函数内,在给它一个参数,用于放大倍数。
function myRand(range) {
return Math.round(Math.random() * range);
}
调用时:
myRand(100);
强调一点,在程序代码中,可以直接使用Math对象的方法,不要误认为Math的方法是其他创建对象的方法。
比如:
var num1 = 25.77;
num1.floor(); // error
正确的用法是:
Math.floor(num1); // 25
数学常数:
常数 | 描述 |
E | 自然常数e,约为2.718 |
LN2 | 2的自然对数,约为0.693 |
LN10 | 10的自然对数,约为2.302 |
LOG2E | 以2为底e的对数,约为1.442 |
LOG10E | 以10为底e的对数,约为0.434 |
PI | 圆周率,约为3.14159 |
SQRTI_2 | 2的平方根的倒数,约为0.707 |
SQRT2 | 2的平方根,约为1.414 |
我们可以在数学计算中,直接使用这些常量。
关键字with:
任何对象都可以使用关键字width,但用Math对象做示范最合适。可以减少输入量。
示例:
with(Math)
{
var myRand = random();
var biggest = max(3,4,5);
var height = round(76.35);
}
可以省去重复输入Math。
我们看一个完整的时间的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>当前日期和时间</title>
<style type="text/css">
p {
font: 14px normal Arial,Verdana,helvetica;
}
</style>
<script>
function write(name,value="") {
document.write(name + " : " +value);
document.write("<br>");
}
var now = new Date();
write("当前时间是");
write("year",now.getFullYear());
write("month",now.getMonth());
write("date",now.getDate());
write("hours",now.getHours());
write("minutes",now.getMinutes());
write("seconds",now.getSeconds());
</script>
</head>
<body>
<script>
tellTime();
</script>
</body>
</html>
上面的代码会把你电脑的当前时间,显示在网页上的。如果需要看到时间的变化,可以使用location对象的reload方法。
<input type="button" value="刷新" onclick="javascript:location.reload();">
另外插一句,Date对象中的getFullYear和setFullYear ,与getYear和setYear的区别。
getYear和setYaer使用的是两位数字表示年份,而getFullYear和setFullyear是使用的4位数字表示年份的。考虑到千禧年的问题,目前getYear和setYear已经废弃,不再使用了。