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

JavaScript:将字符串转换为日期对象而不考虑时区[重复]

  •  0
  • saran3h  · 技术社区  · 7 年前

    :我有一个日期字符串: "2018-11-30T01:00:00+11:00"

    用例 :我需要使用纯js或任何库将其转换为Date对象。

    结果 :我应该接收日期部分为的日期对象 "2018-11-30" "1:00" .

    请帮忙。我试过所有的解决方案,但时间总是变化,以匹配我的机器的时区。我不希望出现这种行为,也不希望在后端执行复杂的时间转换。

    1 回复  |  直到 7 年前
        1
  •  0
  •   saran3h    7 年前

    这是我为这个问题提出的解决方案,它实际上是有效的。


    使用的库:momentjs和纯javascript日期类。

    将字符串日期转换为时刻对象(PS:moment保留原始日期和时间,只要 toDate() 方法(未调用):

    const dateMoment = getMomentFromIsoString(date);

    提取 hours minutes

      const hours = dateMoment.hours();
      const mins = dateMoment.minutes();
    

    第三步。 将时刻转换为日期(PS:这将根据浏览器/机器的时区更改原始日期,但不要担心,请阅读步骤4):

      const dateObj = dateMoment.toDate();
    

    手动设置步骤2中提取的小时和分钟。

      dateObj.setHours(hours);
      dateObj.setMinutes(mins);
    

    dateObj 现在将显示没有任何时区差异的原始日期。即使更改了夏令时,也不会对日期对象产生任何影响,因为我们正在手动设置原始的小时和分钟。

    希望这有帮助。

    推荐文章