将日期转换为带时区的 ISO 格式

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何将日期转换为扩展的 ISO 格式(ISO 8601),包括时区偏移。我们将使用 Date.prototype.getTimezoneOffset() 方法获取时区偏移并将其反转。然后,我们将定义一个辅助函数,将任何传入的数字规范化为整数,并使用 String.prototype.padStart() 将其填充为两位数。最后,我们将使用 Date 原型中的内置方法来构建带有时区偏移的 ISO 8601 字符串。在本实验结束时,你将对如何在 JavaScript 中操作日期有更深入的理解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("`JavaScript`")) -.-> javascript/BasicConceptsGroup(["`Basic Concepts`"]) javascript(("`JavaScript`")) -.-> javascript/AdvancedConceptsGroup(["`Advanced Concepts`"]) javascript/BasicConceptsGroup -.-> javascript/variables("`Variables`") javascript/BasicConceptsGroup -.-> javascript/data_types("`Data Types`") javascript/BasicConceptsGroup -.-> javascript/arith_ops("`Arithmetic Operators`") javascript/BasicConceptsGroup -.-> javascript/comp_ops("`Comparison Operators`") javascript/AdvancedConceptsGroup -.-> javascript/template_lit("`Template Literals`") subgraph Lab Skills javascript/variables -.-> lab-28451{{"`将日期转换为带时区的 ISO 格式`"}} javascript/data_types -.-> lab-28451{{"`将日期转换为带时区的 ISO 格式`"}} javascript/arith_ops -.-> lab-28451{{"`将日期转换为带时区的 ISO 格式`"}} javascript/comp_ops -.-> lab-28451{{"`将日期转换为带时区的 ISO 格式`"}} javascript/template_lit -.-> lab-28451{{"`将日期转换为带时区的 ISO 格式`"}} end

将日期转换为带时区的 ISO 格式

要将日期转换为扩展的 ISO 格式(ISO 8601),包括时区偏移,请执行以下步骤:

  1. 打开终端/SSH 并输入 node 开始编码。
  2. 使用 Date.prototype.getTimezoneOffset() 获取时区偏移并将其反转。将其符号存储在 diff 中。
  3. 定义一个辅助函数 pad(),它使用 Math.floor()Math.abs() 将任何传入的数字规范化为整数,并使用 String.prototype.padStart() 将其填充为两位数。
  4. 使用 pad()Date 原型中的内置方法来构建带有时区偏移的 ISO 8601 字符串。

以下是你可以使用的代码:

const toISOStringWithTimezone = (date) => {
  const tzOffset = -date.getTimezoneOffset();
  const diff = tzOffset >= 0 ? "+" : "-";
  const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, "0");
  return (
    date.getFullYear() +
    "-" +
    pad(date.getMonth() + 1) +
    "-" +
    pad(date.getDate()) +
    "T" +
    pad(date.getHours()) +
    ":" +
    pad(date.getMinutes()) +
    ":" +
    pad(date.getSeconds()) +
    diff +
    pad(tzOffset / 60) +
    ":" +
    pad(tzOffset % 60)
  );
};

使用函数 toISOStringWithTimezone(),并将一个 new Date() 对象作为参数,以获取带时区偏移的 ISO 格式日期。例如:

toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'

总结

恭喜你!你已经完成了“将日期转换为带时区的 ISO 格式”实验。你可以在 LabEx 中练习更多实验来提升你的技能。

您可能感兴趣的其他 JavaScript 教程