导读:本期聚焦于小伙伴创作的《如何用JavaScript获取并格式化当前日期时间?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何用JavaScript获取并格式化当前日期时间?》有用,将其分享出去将是对创作者最好的鼓励。

如何用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():返回四位数的年份,比如2023
  • getMonth():返回月份,取值范围是0-11,0代表1月,11代表12月,使用时需要+1才能得到实际的月份
  • getDate():返回当月的具体日期,取值范围是1-31
  • getDay():返回星期几,取值范围是0-6,0代表星期日,6代表星期六
  • getHours():返回小时数,24小时制,取值范围0-23
  • getMinutes():返回分钟数,取值范围0-59
  • getSeconds():返回秒数,取值范围0-59
  • getMilliseconds():返回毫秒数,取值范围0-999
  • getTime():返回从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:25

3.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

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。