一、定义日期
日期对象Date()对象是系统定义好的对象。Date()这是个构造函数。
特点:返回的是当日的日期,不是实时性,表示时间记录作用。
var now=new Date()
二、常用方法
//获取特定格式的时间
now.getFullYear() // 获取完整的年份 2019
now.getMonth() //获取当前月份(0-11,0代表1月)
now.getDate() //获取当前日(1-31)
now.getDay() //获取当前星期X(0-6,0代表星期天)
now.getTime() //获取当前时间(从1970.1.1开始的毫秒数)
now.getHours() //获取当前小时数(0-23)
now.getMinutes() //获取当前分钟数(0-59)
now.getSeconds() //获取当前秒数(0-59)
now.toLocaleDateString() //获取当前日期 "2019/12/16"
//设置特定格式的时间
now.setTime() //以毫秒设置 Date 对象。
now.setFullYear() //设置年份。
now.setMonth(month, day) // 设置月份。 可用于设置月份中的某一天。
now.setDate() // 设置一个月的某一天。
now.setHours(hour, min, sec, millisec) // 设置指定的时间的小时字段。 该方法可用于设置分钟, 秒以及毫秒数。
now.setMinutes(min, sec, millisec) // 用于设置指定时间的分钟字段。 该方法同样可用于设置秒数与毫秒数。
now.setSeconds(sec, millisec) // 用于设置日期对象的秒字段。 可以用于设置毫秒数。
now.setMilliseconds() // 用于设置指定时间的毫秒字段。( 0 - 999)
//转换为字符串
now.toString()
now.toDateString() //返回日期的字符串形式
now.toTimeString() //返回时间的字符串形式。
now.toLocaleDateString() //返回一个字符串, 代表日期的当地写法
now.toLocaleTimeString() //返回一个字符串, 代表时间的当地写法
//比较日期
var myDate=new Date();
myDate.setFullYear(2008,8,9);
var today = new Date();
if (myDate>today)
{
alert("Today is before 9th August 2008");
}
else
{
alert("Today is after 9th August 2008");
}
三、注意事项
1. new Date() 为系统日期,若获取真实日期:
a. 通过后台获得
b. console.log(new Date($.ajax({ async: false }).getResponseHeader("Date")), new Date());
2.
new Date(new Date('2016-04-12').getTime()); // Tue Apr 12 2016 08:00:00 GMT+0800
new Date(new Date('2016/04/12').getTime()); // Tue Apr 12 2016 00:00:00 GMT+0800
new Date('2014-01-01') // Wed Jan 01 2014 08:00:00 GMT+0800 (CST)
new Date('2014-1-1') // Wed Jan 01 2014 00:00:00 GMT+0800 (CST)
四、案例
1.日期转为时间戳
var time1 = date.getTime();
var time2 = date.valueOf();
var time3 = Date.parse(date);
//第一、第二种:会精确到毫秒,第三种:只能精确到秒,毫秒用000替代
2. 时间戳转日期
function getdate() {
var now = new Date(),
y = now.getFullYear(),
m = now.getMonth() + 1,
d = now.getDate();
return y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d) + " " + now.toTimeString().substr(0, 8);
}
3.n天前的日期
function getdateBefore(n){
var lastDate = new Date(new Date() - 1000 * 60 * 60 * 24 * n),
lastY = lastDate.getFullYear(),
lastM = lastDate.getMonth() + 1,
lastD = lastDate.getDate();
return lastY + "-" + (lastM < 10 ? "0" + lastM : lastM) + "-" + (lastD < 10 ? "0" + lastD : lastD);//得到30天前的时间
}
4.时间
function formatSeconds(value) {
var theTime = parseInt(value);// 秒
var middle= 0;// 分
var hour= 0;// 小时
if(theTime > 60) {
middle= parseInt(theTime/60);
theTime = parseInt(theTime%60);
if(middle> 60) {
hour= parseInt(middle/60);
middle= parseInt(middle%60);
}
}
var result = ""+parseInt(theTime)+"秒";
if(middle > 0) {
result = ""+parseInt(middle)+"分"+result;
}
if(hour> 0) {
result = ""+parseInt(hour)+"小时"+result;
}
return result;
}
5.倒计时
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body onload="countTime()">
<div>
<span id="dayDate">00</span>
<span id="hourDate">00</span>
<span id="minuteDate">00</span>
<span id="secondDate">00</span>
</div>
<script type="text/javascript">
function countTime() {
//获取当前时间
var date = new Date();
var now = date.getTime();
//设置截止时间
var str="2019/12/18 16:50:03";
var endDate = new Date(str);
var end = endDate.getTime();
//时间差
var timeGap = end-now;
//定义变量 d,h,m,s保存倒计时的时间
var d,h,m,s;
if (timeGap>=0) {
d = Math.floor(timeGap/1000/60/60/24);
h = Math.floor(timeGap/1000/60/60%24);
m = Math.floor(timeGap/1000/60%60);
s = Math.floor(timeGap/1000%60);
//递归每秒调用countTime方法,显示动态时间效果
setTimeout(countTime,1000);//计时器
}
else {
d = 0;
h = 0;
m = 0;
s = 0;
}
//将倒计时赋值到div中
document.getElementById("dayDate").innerHTML = d+"天";
document.getElementById("hourDate").innerHTML = h+"时";
document.getElementById("minuteDate").innerHTML = m+"分";
document.getElementById("secondDate").innerHTML = s+"秒";
}
</script>
</body>
</html>
6.时钟
<html>
<head>
<script type="text/javascript">
function startTime()
{
var today=new Date()
var h=today.getHours()
var m=today.getMinutes()
var s=today.getSeconds()
// add a zero in front of numbers<10
m=checkTime(m)
s=checkTime(s)
document.getElementById('txt').innerHTML=h+":"+m+":"+s
t=setTimeout('startTime()',500)
}
function checkTime(i)
{
if (i<10)
{i="0" + i}
return i
}
</script>
</head>
<body onload="startTime()">
<div id="txt"></div>
</body>
</html>