首页 > 解决方案 > 使用文本本地时区解码日期和时间字符串

问题描述

我有一个应用程序可以解析来自 RSS 提要的信息,这些提要指定日期应该以 RFC-822 格式指定 - Date.parse 可以正常工作。总的来说,人们输入了一致的时间戳。但是,我遇到过有人将日期和时间指定为(例如)“周六,2018 年 12 月 1 日 00:00:00 MSK”(据我所知 MSK 是莫斯科时区)。

有没有办法以编程方式将这样的字符串转换为我可以与 Date.parse 一起使用的字符串(显然对于 MSK,我可以硬编码为 +(或 -)莫斯科的偏移量,但我希望比它更灵活/可靠一点那)

出于各种原因,我宁愿避免必须包含另一个库来执行此操作,因此将不胜感激涉及标准 javascript 的答案

标签: javascriptdatetime

解决方案


因此,根据我的经验,这些问题我的意思是所有时区问题都可以通过诸如 momentJs 之类的外部库轻松解决。每次我遇到约会问题时,js 都会毫无问题地解决它。

请记住,在 js 中玩日期并不是开箱即用的完美实现,并且会带来很多麻烦。如果您不想添加其他库,则需要编写自己的 convertr 函数,例如:

const date = 'Sat, 1 Dec 2018 00:00:00 MSK';

const dateConverted = (date)=> {
    return date.replace('MSK', '+0300');
}

const convertedDate = dateConverted(date);
Date.parse(convertedDate)

但在这种情况下,您将需要扩展 dataConverter 函数与 js 时区无法识别的其他函数,例如。例如 GMT + 3 也可以用其他缩写表示,例如:

  • AST – 阿拉伯标准时间
  • C – 查理时区
  • EAT – 东非时间
  • EEST – 东欧夏令时
  • FET – 远东欧时间
  • IDT – 以色列夏令时
  • SYOT – 昭和时间
  • TRT – 土耳其时间

没有其他方法可以实现自己的转换器功能或外部库。


推荐阅读