javascript - 使用文本本地时区解码日期和时间字符串
问题描述
我有一个应用程序可以解析来自 RSS 提要的信息,这些提要指定日期应该以 RFC-822 格式指定 - Date.parse 可以正常工作。总的来说,人们输入了一致的时间戳。但是,我遇到过有人将日期和时间指定为(例如)“周六,2018 年 12 月 1 日 00:00:00 MSK”(据我所知 MSK 是莫斯科时区)。
有没有办法以编程方式将这样的字符串转换为我可以与 Date.parse 一起使用的字符串(显然对于 MSK,我可以硬编码为 +(或 -)莫斯科的偏移量,但我希望比它更灵活/可靠一点那)
出于各种原因,我宁愿避免必须包含另一个库来执行此操作,因此将不胜感激涉及标准 javascript 的答案
解决方案
因此,根据我的经验,这些问题我的意思是所有时区问题都可以通过诸如 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 – 土耳其时间
没有其他方法可以实现自己的转换器功能或外部库。
推荐阅读
- r - R 闪亮的应用程序 DataTable 具有类似 excel 的过滤功能,可包含所有内容,但不包含某些元素或相反的内容
- postgresql - Postgres:如何在不影响引用它的其他 MV 的情况下更改 MV 的名称?
- node.js - 尝试在 Angular UI 中显示时,获取的已排序 API 数据(NodeJs &Mongoose)未按排序顺序显示
- javascript - 显示更新的表格而不刷新或重新加载页面
- javascript - 如何将日期值转换为天数
- csv - 使用 Simple Data Writer 将响应数据与其他标签一起保存
- javascript - 使用按钮将每个 td 单元格文本复制到剪贴板
- php - 你如何在 PHP 中发布 JSON 数据?(将原始 cURL 代码转换为 PHP)
- aws-api-gateway - 未从 API Gateway URL 获取标头
- scala - 在 RoundRobinPool 中获取所选演员?