如何用JavaScript获取当前日期和时间
在前端开发中,获取当前日期和时间是非常常见的需求,比如记录用户操作时间、展示动态时间、生成时间戳等场景都会用到。JavaScript原生提供了Date对象,无需引入额外库就能轻松实现日期时间的获取和处理。
一、创建Date对象获取基础时间
要获取当前日期和时间,首先需要创建Date对象,不传入参数时,Date构造函数会自动生成当前系统的日期时间对象。
// 创建当前日期时间对象 const now = new Date(); console.log(now); // 输出类似:Wed Oct 11 2023 14:30:25 GMT+0800 (中国标准时间)
上面的代码会输出一个完整的Date对象,包含年、月、日、时、分、秒、时区等完整信息,但往往我们需要的是格式化后的字符串或者单独的年、月、日等数值,这时候就需要用到Date对象的实例方法。
二、获取具体的日期时间分量
Date对象提供了一系列get方法,可以分别获取年、月、日、时、分、秒、毫秒等具体数值,需要注意的是部分方法的返回值有特殊规则。
getFullYear():返回四位数的年份,比如2023getMonth():返回月份,取值范围是0-11,0代表1月,11代表12月,使用时需要+1才能得到实际的月份getDate():返回当月的具体日期,取值范围是1-31getDay():返回星期几,取值范围是0-6,0代表星期日,6代表星期六getHours():返回小时数,24小时制,取值范围0-23getMinutes():返回分钟数,取值范围0-59getSeconds():返回秒数,取值范围0-59getMilliseconds():返回毫秒数,取值范围0-999getTime():返回从1970年1月1日00:00:00 UTC到当前时间的毫秒数,也就是时间戳
下面是一个获取各个分量的示例:
const now = new Date();
// 获取年份
const year = now.getFullYear();
// 获取月份,需要+1才是实际月份
const month = now.getMonth() + 1;
// 获取日期
const date = now.getDate();
// 获取星期几
const day = now.getDay();
// 获取小时
const hours = now.getHours();
// 获取分钟
const minutes = now.getMinutes();
// 获取秒数
const seconds = now.getSeconds();
// 获取时间戳
const timestamp = now.getTime();
console.log(`当前时间:${year}年${month}月${date}日 ${hours}:${minutes}:${seconds}`);
console.log(`时间戳:${timestamp}`);三、格式化日期时间字符串
实际开发中我们经常需要固定格式的日期时间字符串,比如YYYY-MM-DD HH:mm:ss格式,这时候可以结合上面的get方法自行拼接,也可以使用Date对象的内置格式化方法。
3.1 手动拼接格式化字符串
手动拼接时需要注意个位数的月份、日期、小时、分钟、秒数前面补0,避免出现2023-1-5 9:3:2这种不规范的格式。
function formatDate(date) {
const year = date.getFullYear();
// 月份补0,小于10前面加0
const month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
// 日期补0
const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
// 小时补0
const hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
// 分钟补0
const minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
// 秒数补0
const seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
const now = new Date();
console.log(formatDate(now)); // 输出类似:2023-10-11 14:30:253.2 使用内置方法快速格式化
如果不想手动拼接,也可以使用Date对象的内置方法,不过这些方法返回的字符串格式是固定的,可能需要根据需求选择:
toLocaleString():返回当前时区下的日期时间字符串,格式会根据运行环境有所不同toLocaleDateString():只返回日期部分,不包含时间toLocaleTimeString():只返回时间部分,不包含日期toISOString():返回ISO 8601格式的字符串,是UTC时区的时间,比如2023-10-11T06:30:25.123Z
使用示例:
const now = new Date(); console.log(now.toLocaleString()); // 输出类似:2023/10/11 14:30:25(格式随环境变化) console.log(now.toLocaleDateString()); // 输出类似:2023/10/11 console.log(now.toLocaleTimeString()); // 输出类似:14:30:25 console.log(now.toISOString()); // 输出类似:2023-10-11T06:30:25.123Z
四、时间戳的应用
除了获取可读的日期时间,Date对象还可以快速生成时间戳,除了前面提到的getTime()方法,还可以用Date.now()静态方法直接获取当前时间戳,不需要先创建Date对象。
// 方法1:通过Date对象的getTime()获取 const dateObj = new Date(); const timestamp1 = dateObj.getTime(); // 方法2:通过Date.now()静态方法获取,更简洁 const timestamp2 = Date.now(); console.log(timestamp1); console.log(timestamp2);
时间戳常用于计算时间差、缓存标识、接口请求参数等场景,因为它的数值唯一且递增,方便进行时间相关的逻辑处理。
五、注意事项
使用Date对象获取时间时,默认是基于用户本地系统的时间,如果用户修改了系统时间,获取到的时间也会随之变化。如果需要获取标准服务器时间,通常需要通过接口从服务端获取,而不是直接依赖客户端的时间。
另外处理月份、星期等返回值是0起始的方法时,一定要记得做偏移处理,避免出现逻辑错误。如果需要处理复杂的日期时间计算,比如日期加减、时区转换等,也可以考虑引入专业的日期处理库,能大幅降低开发成本和出错概率。
JavaScript获取当前时间Date对象时间戳日期格式化前端开发 本作品最后修改时间:2026-05-23 23:17:40