如何从时间戳获取、转换和格式化 JavaScript 日期
作者:社区 / 用例
2023 年 2 月 10 日
导航至
您是否曾经需要在 JavaScript 中处理日期,但又苦于将时间戳转换为人类可读的日期?别担心,在本教程中,我们将从时间戳中获取、转换和格式化 JavaScript 日期。
从时间戳获取日期
在 JavaScript 中将时间戳转换为日期之前,我们必须首先获取时间戳。根据您尝试执行的操作,在 JavaScript 中获取时间戳的方法有几种。以下是一些获取时间戳的常用方法。
使用 Date 对象
JavaScript 中的 Date 对象是一个内置对象,提供了一种处理日期和时间的方法。它表示时间中的特定瞬间,并提供用于获取日期的各种组成部分(例如年、月、日、小时、分钟、秒和毫秒)的方法。
要创建新的 Date 对象,请使用“new”关键字,后跟 Date 构造函数,带或不带任何参数。如果未指定参数,则 Date 对象将表示当前日期和时间。如果指定了参数,则它可以是时间戳(自 1970 年 1 月 1 日以来的毫秒数)、特定格式的字符串日期,或年、月、日、小时、分钟、秒和毫秒的单独值。
获得 Date 对象后,您可以使用各种方法来获取日期和时间的特定部分。例如,您可以使用 getFullYear() 方法获取年份,使用 getDate() 方法获取月份中的日期,使用 getMonth() 方法获取月份(从 0 开始),使用 getHours() 方法获取小时,依此类推。您还可以使用 set 方法来设置日期和时间的特定部分。
要获取当前时间戳,我们可以创建一个新的 Date 对象并调用 getTime() 方法,该方法返回自 1970 年 1 月 1 日 00:00:00 世界协调时间 (UTC) 以来的毫秒数。
const timestamp = new Date().getTime();
console.log(timestamp); // prints the current timestamp
使用 Date.now() 方法
在 JavaScript 中获取当前时间戳的另一种方法是使用 Date.now() 方法。此方法返回自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数,就像 getTime() 方法一样。这是一个示例
const timestamp = Date.now();
console.log(timestamp); // prints the current timestamp
Date.now() 方法是 JavaScript 中的一个内置函数,允许开发人员快速检索当前时间戳。它的主要优点是它返回自 1970 年 1 月 1 日午夜 UTC 以来的毫秒数,而不是秒或分钟。
这个特定的日期和时间被称为 Unix 纪元或 Unix 时间,它是许多计算机系统的标准参考点。通过计算自此参考点以来的毫秒数,开发人员能够计算准确的时间间隔和持续时间。
与 getTime() 方法(它是 Date 对象的一个函数)相比,Date.now() 是一个静态方法。这意味着它是对 Date 类本身而不是对 Date 对象的实例调用的。因此,在调用该方法之前,无需创建新的 Date 对象。
使用 Date.now() 通常比 JavaScript 中检索当前时间戳的其他方法(例如 new Date().getTime())更快且更有效。此外,当不需要高精度时,建议使用 Date.now(),因为它提供了准确的时间戳,同时避免了时区偏移和夏令时的潜在问题。
使用 Unix 时间戳
如果您正在处理来自外部源的时间戳,则它们可能是 Unix 时间戳格式,表示自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数。要将 Unix 时间戳转换为 JavaScript 时间戳,我们可以将其乘以 1,000 以将其转换为毫秒。
const unixTimestamp = 1616608200; // example Unix timestamp
const timestamp = unixTimestamp * 1000;
console.log(timestamp); // prints the corresponding JavaScript timestamp
将时间戳转换为日期
现在我们有了时间戳,我们可以将其转换为 JavaScript 中的人类可读日期。我们可以使用几种方法来实现此目的。
使用 Date 对象
将时间戳转换为 JavaScript 日期的一种方法是创建一个新的 Date 对象并将时间戳作为参数传递。然后,我们可以使用各种 Date 方法来获取各个日期组件。
const timestamp = 1616608200000; // example timestamp
const date = new Date(timestamp);
console.log(date.getFullYear()); // prints the year (e.g. 2021)
console.log(date.getMonth()); // prints the month (0-11, where 0 = January)
console.log(date.getDate()); // prints the day of the month (1-31)
console.log(date.getHours()); // prints the hour (0-23)
console.log(date.getMinutes()); // prints the minute (0-59)
console.log(date.getSeconds()); // prints the second (0-59)
使用 Intl.DateTimeFormat 对象
将时间戳转换为 JavaScript 日期的另一种方法是使用 Intl.DateTimeFormat 对象,该对象提供了一种根据用户的语言环境格式化日期和时间的方法。
const timestamp = 1616608200000; // example timestamp
const date = new Date(timestamp);
const options = { year: 'numeric', month: 'long', day: 'numeric' };
const formattedDate = new Intl.DateTimeFormat('en-US', options).format(date);
console.log(formattedDate); // prints "March 24, 2021"
从时间戳格式化日期
获得 Date 对象后,我们可以在将其显示给用户之前以特定方式对其进行格式化。以下是在 JavaScript 中格式化日期的一些常用方法。
使用 toLocaleDateString() 方法
toLocaleDateString() 方法是 Date 对象的内置方法,它返回日期在用户本地时区中的字符串表示形式。我们可以传入选项以不同的方式格式化字符串。
const timestamp = 1616608200000; // example timestamp
const date = new Date(timestamp);
const formattedDate = date.toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });
console.log(formattedDate); // prints "Wednesday, March 24, 2021"
使用库
格式化日期有时可能很复杂。原因是不同的国家或地区有不同的日期格式和时区。例如,在美国,标准日期格式是月/日/年,而在欧洲,标准格式是日/月/年。此外,一些国家使用 12 小时制时钟,而另一些国家使用 24 小时制时钟。
Moment.js 通过提供各种工具来操作、验证和格式化日期,从而简化了处理这些差异的过程。除了为多个地区和时区格式化日期之外,Moment.js 还可以执行复杂的操作,例如计算日期之间的差异、从字符串解析日期以及使用不同的日历系统操作日期。
要使用 Moment.js,我们首先需要通过包管理器(例如 npm 或 yarn)安装它。安装完成后,我们可以使用其 API 以各种方式格式化日期。
const moment = require('moment');
const timestamp = 1616608200000; // example timestamp
const formattedDate = moment(timestamp).format('dddd, MMMM Do YYYY');
console.log(formattedDate); // prints "Wednesday, March 24th 2021"
该 API 提供了广泛的格式化选项,例如将日期转换为包含星期几、月份、年份和时间的人类可读字符串。它还可以格式化日期以用于数据库或其他系统,例如将毫秒转换为日期对象或字符串。
如您所见,Moment.js 是一个强大的工具。它可以使在 JavaScript 中处理日期变得更加容易和高效。这对于需要在不同时区或地区显示日期的 Web 应用程序尤其有用。
结论
在本教程中,我们介绍了与 JavaScript 中的时间戳相关的几个主题。首先,我们讨论了获取时间戳的各种方法。此外,我们探讨了将时间戳转换为人类可读日期的两种选择:Date 对象和 Intl.DateTimeFormat 对象。最后,我们回顾了如何以多种方式格式化日期,包括通过使用 toLocaleDateString() 方法或像 Moment.js 这样的库。总的来说,本教程全面介绍了如何在 JavaScript 中处理时间戳和日期。
在 JavaScript 中处理日期可能令人生畏,但有了正确的工具和技术,它不必如此。了解如何在 JavaScript 中获取、转换和格式化日期使您能够构建更健壮、更用户友好的应用程序,从而轻松处理日期。
关于作者
这篇文章由 Juan Reyes 撰写。作为一名企业家、技术精湛的工程师和心理健康倡导者,Juan 追求可持续的自我成长,体现了领导力、智慧和热情。凭借在科技行业超过 15 年的经验,Juan 有机会与日本和美国移动开发、Web 开发和电子商务领域的一些最杰出的参与者合作。