第二章 JS进阶 【5. Date(日期对象)】
5. Date(日期对象)
JavaScript 中的 Date
对象用于处理日期和时间。它支持多种构造方式:
5.1 Date的方法
创建方式
let now = new Date(); // 当前时间
let date1 = new Date("2023-12-25"); // 字符串创建
let date2 = new Date(2023, 11, 25); // 年,月(0-11),日
let date3 = new Date(1703520000000); // 时间戳创建
获取方法
d.getFullYear(); // 年
d.getMonth(); // 月(0-11)
d.getDate(); // 日
d.getDay(); // 星期(0-6)
d.getHours(); // 小时
d.getMinutes(); // 分钟
d.getSeconds(); // 秒
d.getMilliseconds(); // 毫秒
d.getTime(); // 时间戳(毫秒)
设置方法
d.setFullYear(year); // 设置年
d.setMonth(month); // 设置月
d.setDate(date); // 设置日
d.setHours(hours); // 设置小时
d.setMinutes(minutes); // 设置分钟
d.setSeconds(seconds); // 设置秒
d.setMilliseconds(ms); // 设置毫秒
d.setTime(timestamp); // 设置时间戳
格式化方法
d.toString(); // 完整字符串
d.toDateString(); // 日期字符串
d.toTimeString(); // 时间字符串
d.toLocaleDateString(); // 本地日期格式
d.toLocaleTimeString(); // 本地时间格式
d.toISOString(); // ISO格式
案例
//定时器setInterval(function () {//创建日期let date1 = new Date() //年月日 时分秒 毫秒// console.log(date1);// document.write(date1)//年月日 时分秒 毫秒// 通过对象获取let y = date1.getFullYear()//年let m = date1.getMonth()//月0~11let d = date1.getDate()//日let week = date1.getDay()//星期几let h = date1.getHours()//时let mi = date1.getMinutes()//分let s = date1.getSeconds()//秒let ms = date1.getMilliseconds()//毫秒// 查看数据console.log(y);console.log(m + 1);console.log(d);console.log(week);//0~6 0是星期日console.log(h);console.log(mi);console.log(s);console.log(ms);//显示//document.write(${y}年${m+1}月${d}日,星期${week},${h}:${mi}:${s} ${ms}`)document.body.innerHTML = `${y}年${m + 1}月${d}日,星期${week},${h}:${mi}:${s} ${ms}`}, 1)//每1毫秒执行一次
5.2 时间戳
时间戳(Timestamp) 是指从某一特定时间点(通常是 1970年1月1日 00:00:00 UTC,也称为 Unix纪元)开始所经过的 毫秒数 或 秒数。时间戳常用于表示某个具体的时间点,便于跨平台、跨语言地进行时间的计算、存储和传输。
🕒 时间戳的基本概念
- Unix时间戳(Unix Timestamp):
- 定义:从1970年1月1日 00:00:00 UTC 到现在的 秒数 或 毫秒数。
- 常用于:Linux系统、大多数编程语言和Web开发中。
- 示例:
1753200000
表示的是 2025年7月22日 00:00:00 UTC- 如果是毫秒级时间戳,则为
1753200000000
获取时间戳
//获取时间戳console.log(Date.now()); //毫秒数字 北京:1970-1-1 00:80:00 000let date2 = new Date()console.log(date2);//通过日期对象获取时回截console.log(date2.getTime());
案例
//2020-7-7let data3 = new Date("2020-7-7")let data4 = new Date(2020, 6, 7)//6代表7月let data5 = new Date(175314345522)//用时间戳获取日期对象console.log(data3);console.log(data4);console.log(data5);//时间戳console.log(new Date(0));//1970-1-1 00:80:00 000console.log(new Date(1000));//1970-1-1 00:80:01 000
5.3 时间差案例
//12点的时间戳let date = new Date("2025-7-22 12:00:00")let t1 = date.getTime()console.log(t1);//现在时间戳let t2 = Date.now()console.log(t2);let diffMs = t1 - t2console.log("毫秒" + diffMs);console.log("秒" + Math.floor(diffMs / 1000));//向下取整console.log("分" + Math.floor(diffMs / 1000 / 60));console.log("时" + Math.floor(diffMs / 1000 / 60 / 60));console.log("几分" + Math.floor(diffMs / 1000 / 60) % 60);
5.4 获取两个日期,并得出相差天数
日期1: <input id="ipt_1" type="date">日期2: <input id="ipt_2" type="date"><script>// let str = prompt('请输入')// console.log(str);// 找到输入框、内部的值// console.log(ipt_1);// console.log(ipt_1.value);//值// 当改变的时候ipt_2.onchange = function () { //程序// console.log(ipt_1.value);//值 string// console.log(ipt_2.value);//值 string// date日期对象let d1 = new Date(ipt_1.value)let d2 = new Date(ipt_2.value)// 天数插值,计算房价console.log((d2 - d1) / 1000 / 60 / 60 / 24);}</script>
5.5 设置日期方法
let date = new Date()//今天// dir对象的结构访问数据console.dir(date);// console.dir(date.toString());//年月日时分秒// console.log(date.toDateString());//年月日// console.log(date.toTimeString());//时分秒// console.log(date.toLocaleDateString());//中式:年月日// console.log(date.toLocaleTimeString());//中式:时分秒console.log(date.toLocaleString());//中式年月日时分秒// console.log(date.toISOString());//国际时间// 设置date.setFullYear(2020)date.setMonth(13)date.setDate(31)console.log(date.toLocaleString());console.log(date.getDay());// 今天的800天后let today = new Date(Date.now())let d = today.getDate()today.setDate(d + 800)//800天后console.log(today.toLocaleString());
6. error错误
Error对象用于表示程序运行时的错误,是JavaScript中所有错误的基础类型。
内置错误类型
Error // 基础错误类型
SyntaxError // 语法错误
ReferenceError // 引用错误
TypeError // 类型错误
RangeError // 范围错误
URIError // URI错误
EvalError // eval错误(已废弃)
创建错误对象
// 基础错误
let error = new Error("错误信息");
// 特定类型错误
let syntaxError = new SyntaxError("语法错误");
let typeError = new TypeError("类型错误");
let referenceError = new ReferenceError("引用错误");
错误对象属性
error.name; // 错误名称
error.message; // 错误信息
error.stack; // 错误堆栈(非标准)
error.fileName; // 文件名(Firefox)
error.lineNumber; // 行号(Firefox)
6.1 try...catch... 捕捉错误
/*try {} catch (error) {}*/try {// console.log(x);let x = 100} catch (error) {// console.log(error);console.dir(error);} finally {//这个可以不用console.log('结束');}
6.2 创建错误
// 创建错误let err1 = new Error('错错错错错')// console.log(err1);// 显示错误// console.error(err1)console.dir(err1)console.warn('注意注意')
7. JSON(数据交换格式)
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于JavaScript对象语法。
基本语法
// JSON字符串: {"name": "张三", "age": 18, "isStudent": true}
// JSON数组: [123, "hello", {"key": "value"}]
常用方法
JSON.parse()
// 解析JSON字符串为JavaScript对象
JSON.parse(jsonString);
// 带reviver函数的解析
JSON.parse(jsonString, (key, value) => {// 可以对解析的值进行转换return value;
});
JSON.stringify()
// 将JavaScript对象转换为JSON字符串
JSON.stringify(obj);
// 带replacer函数的转换
JSON.stringify(obj, (key, value) => {// 可以对值进行过滤或转换return value;
});
// 带缩进的格式化
JSON.stringify(obj, null, 2); // 缩进2空格
案例
// 对象let obj = {name: "张三",age: 18}// 字符串 json 【轻量数据交换格式】let str = '{"name":"李四","age":20}'document.write(obj + "<br/>")document.write(str + "<br/>")// 对象转json字符串 document.write(JSON.stringify(obj + "<br/>"))// json字符串转对象console.log(JSON.parse(str));