【问题标题】:Formatting ISO time with Luxon使用 Luxon 格式化 ISO 时间
【发布时间】:2021-07-28 03:09:25
【问题描述】:

使用 Luxon JS,我一直在尝试使用原生 toISO 函数将日期时间格式化为某种格式的输出:

这就是我得到的

"2018-08-25T09:00:40.000-04:00"

这就是我想要的

"2018-08-25T13:00:40.000Z"

我知道它们在 unix 时间方面是等价的,除了格式不同之外,它们的含义相同,我只是希望能够输出第二个字符串而不是第一个。我浏览了 Luxon 文档,但找不到任何可以满足我需要的参数/选项。

【问题讨论】:

  • 您需要先将时间转换为UTC。尝试使用 date.toUTC().toISO() 而不是 date.toISO() .... date 是您的日期对象。
  • 为什么要使用 Luxon 呢?内置的 Date.prototype.toISOString 方法可以满足您的需求。

标签: javascript datetime momentjs luxon


【解决方案1】:

正如 cmets 中已经说明的其他内容,您可以使用 2 种方法:

  • 使用toUTC 将 Luxon DateTime 转换为 UTC:

    "Set" the DateTime's zone to UTC. Returns a newly-constructed DateTime.
    
  • 使用JS Date的toISOString()方法。

您可以使用toJSDate() 从 luxon DateTime 获取 Date 对象:

Returns a JavaScript Date equivalent to this DateTime.

例子:

const DateTime = luxon.DateTime;
const dt = DateTime.now();
console.log(dt.toISO())
console.log(dt.toUTC().toISO())
console.log(dt.toJSDate().toISOString())
console.log(new Date().toISOString())
<script src="https://cdn.jsdelivr.net/npm/luxon@1.26.0/build/global/luxon.js"></script>

【讨论】:

    【解决方案2】:

    从文档中我看到,在 DateTime 的方法 .fromISO 中,您可以在 ISO 日期字符串之后添加一个选项对象(在您的示例中为“2018-08-25T09:00:40.000-04:00”) .在这个对象中指定zone: utc 像这样:

    const DateTime = luxon.DateTime;
    
    const stringDate = "2018-08-25T09:00:40.000-04:00";
    
    const dt = DateTime.fromISO(stringDate, {zone: 'utc'});
    
    console.log('This is your date format', dt.toISO())
    <script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/1.26.0/luxon.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2021-06-29
      • 2021-12-12
      • 2021-05-20
      • 2021-01-11
      • 2021-02-14
      • 2021-01-13
      • 2021-08-30
      • 2022-01-18
      相关资源
      最近更新 更多