代码之家  ›  专栏  ›  技术社区  ›  Sergeon

卢森:如何在特定日期忽略时区

  •  0
  • Sergeon  · 技术社区  · 6 年前

    我想在不带 Settings.defaultZone 考虑到。

    在我的例子中,我从第三方日期选择器组件获得了一个日期字符串格式如下:

    2019-06-28T00:00:00

    不过,现在我们使用Luxon来管理所有应用程序的日期,所以我需要解析该日期来生成Luxon。

    因此,我将字符串解析如下:

    import { DateTime } from 'luxon';
    function parseDate(dateString) { // Let's say dateString === 2019-06-28T00:00:00
    
      const formattedDate = DateTime.fromISO(value); // 2019-06-27T23:00:00.000Z
     ...
    }
    

    如你所见 formattedDate 受当前时区的影响在这种情况下,在应用程序引导中,我们将常规时区设置为GMT+1。

    因此,格式化日期设置为6月27日23:00,而不是6月28日00:00,这是用户在日期选择器中选择的日期全局时区设置正在随时间调整。

    这通常是很好的,但是在这种情况下(用户正在选择他们的身份证的到期日),我们不需要也不想考虑时区我想把日期定在6月28日的utc时区。

    我试过这个:

    const formattedValue = DateTime.fromISO(value).setZone('utc');

    但是,这并没有修改日期,而是将日期设置为6月27日。

    我想有一个简单的方法来实现这一点,只是我找不到。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sergeon    6 年前

    我很亲近:

    const formattedValue = DateTime.fromISO(value, {zone: 'utc'});
    

    做到了。