如何从时间戳获取、转换和格式化 JavaScript 日期
作者:社区 / 用例
2023年2月10日
导航至
您是否曾经需要处理 JavaScript 中的日期,但在将时间戳转换为可读日期时遇到了困难?不用担心,因为在本文中,我们将从时间戳中获取、转换和格式化 JavaScript 日期。
从时间戳获取日期
在将时间戳转换为 JavaScript 中的日期之前,我们必须首先获取时间戳。根据您要执行的操作,JavaScript 中获取时间戳的方法有多种。以下是一些常见的方法来获取时间戳。
使用 Date 对象
JavaScript 中的 Date 对象是一个内置对象,它提供了一种处理日期和时间的方式。它表示特定的时间点,并提供了获取日期和时间的各种组件的方法,例如年、月、日、时、分、秒和毫秒。
要创建一个新的 Date 对象,使用“new”关键字后跟 Date 构造函数,可以带或不带任何参数。如果没有指定参数,则 Date 对象将表示当前日期和时间。如果指定了参数,它可以是自1970年1月1日以来的时间戳(以毫秒为单位)、特定格式的字符串日期,或者年、月、日、时、分、秒和毫秒的单独值。
一旦您有了 Date 对象,您可以使用各种方法获取日期和时间的特定部分。例如,您可以使用 getFullYear() 方法获取年份,使用 getDate() 方法获取月份中的天数,使用 getMonth() 方法获取月份(基于0),使用 getHours() 方法获取小时,等等。您还可以使用设置方法来设置日期和时间的特定部分。
要获取当前时间戳,我们可以创建一个新的 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
JavaScript 中的 Date.now() 方法是一个内置函数,允许开发者快速获取当前时间戳。它的主要优势是返回自1970年1月1日午夜UTC以来的毫秒数,而不是秒或分钟。
这个特定的日期和时间称为 Unix纪元或 Unix时间,它是许多计算机系统的标准参考点。通过计算自该参考点以来的毫秒数,开发者可以计算出精确的时间间隔和持续时间。
与 getTime() 方法不同,后者是 Date 对象的函数,Date.now() 是一个静态方法。这意味着它是直接在 Date 类本身上调用,而不是在 Date 对象的实例上调用。因此,在调用该方法之前无需创建新的 Date 对象。
使用 Date.now() 通常比其他获取当前时间戳的方法(如 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中的时间戳相关的几个主题。[链接](https://influxdb.org.cn/blog/getting-started-with-javascript-and-influxdb-2-0/)。首先,我们讨论了获取时间戳的各种方法。此外,我们还探讨了将时间戳转换为可读日期的两种选项:使用Date对象和Intl.DateTimeFormat对象。最后,我们回顾了多种格式化日期的方法,包括使用toLocaleDateString()方法或类似Moment.js的库。总的来说,本教程全面介绍了在JavaScript中处理时间戳和日期的方法。
在JavaScript中处理日期可能会让人感到困难,但有了合适的工具和技术,这并不难。了解如何在JavaScript中获取、转换和格式化日期,可以帮助您构建更健壮、更友好的应用程序,这些应用程序可以轻松处理日期。
关于作者
本文由Juan Reyes撰写。作为一名企业家、熟练的工程师和心理健康倡导者,[链接](https://www.ajourneyforwisdom.com/),Juan致力于可持续的自我成长,体现领导力、机智和热情。在科技行业拥有超过15年的经验,Juan有机会与日本和美国的一些最杰出的移动开发、Web开发和电子商务企业合作。