首页 > 解决方案 > 使用 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 的新手,如果我搞砸了,对不起。先感谢您!

标签: node.jspostgresqldateparsingmomentjs

解决方案


看起来 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;
}

推荐阅读