node.js - 使用 MomentJS 将“llll”语言环境感知格式化数据解析为 Postgres 默认日期格式
问题描述
我使用 Axios 成功获取了一些数据,我需要将这些数据存储到我的 Postgres 数据库中。
提取数据中的一个字段是一个pubDate
字段,其格式完全如下:
"Tue, 15 Apr 2020 20:01:30 +0000"
阅读Moment 文档,这似乎是这种“ locale aware 'llll'
”格式。
所以,我需要解析这个 pubDate 并将其格式化为默认的 Postgres 日期格式。然后 pubDate 看起来像这样:
"2020-04-14T20:01:30"
我一直在寻找这个过程很长一段时间,只是找不到任何可行的方法。
我已经尝试过了(没有用),基于 docs 中的 String + Format:
let date = moment(pubDate, 'llll').format();
我是 NodeJS 的新手,如果我搞砸了,对不起。先感谢您!
解决方案
看起来 MomentJS 没有这个的默认函数(我在任何地方都找不到),所以我创建了一个:
function parseDate (date) {
// date format: "Thu, 16 Apr 2020 18:29:49 +0000"
date = String(date);
// date format (after , split): ["", "Day", "Abbreviated Month", "Year", "hour:minute:seconds", "+0000"]. I.E.: ["", "16", "Apr", "2020", "18:29:49", "+0000"]
let dateInfo = String(date).split(",")[1].split(" ").slice(1, -1);
// ["Day", "Abbreviated Month", "Year", "hour:minute:seconds"]
let dateString = dateInfo[2] + '-' + moment().month(dateInfo[1]).format("M") + '-' + dateInfo[0] + ' ' + dateInfo[3];
const parsedDate = moment(dateString, 'YYYY-MM-DD hh:mm:ss');
return parsedDate;
}
推荐阅读
- javascript - 从数组中删除项目(useState Hook)
- unity3d - 在统一 3d 中创建一个碗形 3d 对象
- android - 无法在照片或图库中显示图像
- docker-compose - docker-compose.yaml 文件 - 如何在密码中表示特殊字符?
- c++ - 是否可以显式调用名称损坏函数?
- java - 在构造函数上声明日期
- google-sheets - 过滤功能中的数据按字母顺序排列
- ios - UILabel 动态调整大小 - Swift
- javascript - 从本地文件读取 JSON 但地图功能出错
- react-native - createBottomTabNavigator 隐藏选项卡之一