首页 > 解决方案 > 检索来自 REST API 的日期时的日期无效

问题描述

我已经从 Rest API 中检索到日期。结果成为无效日期。下面是我的代码。如果有错误的格式,你能帮我吗?

ngOnInit() {
    this.reportList$ = [];
    from(this.mcsService.getReportList().then(res => {
      for (let item of res.data.items as ReportSummaryItem[]) {
        let itemDate = new Date(item.createdOn);
        item.createdOn = itemDate.toLocaleDateString('en-GB') + ' ' + itemDate.toLocaleTimeString();
        console.log("Report Created Date"+item.createdOn);
        this.reportList$.push(item);
      }
      this.ref.detectChanges();
      return res.data.items;
    }));
  }

这是来自 Rest API 的函数,用于检索日期。

function getRows(req, res) {
    var parameter = { 'createdBy': req.user.username };
    var limitParam = '';
    var offsetParam = '';

    if (typeof req.query.offset === 'undefined') {
        offsetParam = ' OFFSET 0 ';
    } else {
        offsetParam = ' OFFSET ' + req.query.offset;
    }

    if (typeof req.query.limit === 'undefined') {
        limitParam = ' ROWS FETCH NEXT 100 ROWS ONLY ';
    } else {
        limitParam = ' ROWS FETCH NEXT ' + req.query.limit + ' ROWS ONLY ';
    }


    req.oracleMobile.database.sql(
        'SELECT tr."id", tr."observation", '
        + 'TO_CHAR(tr."createdOn" AT TIME ZONE \'+00:00\', \'dd-MON-yy\') as "createdOn" '
        + 'FROM "' + req.tarTable + '" tr ' +
        ' WHERE tr."createdBy" = :createdBy ' +
        ' ORDER BY tr."createdOn" desc ' + offsetParam + limitParam, parameter
    ).then(
        function (result) {
            res.status(result.statusCode).send(result.result);
        }, function (err) {
            res.status(err.statusCode).send(errorHandler.restErrorHandler(err));
        }
    );
}

标签: ionic-framework

解决方案


我认为返回日期的格式不兼容。最好按照 ISO 8601 (yyyy-mm-ddThh:mm:ss.ffffff) 对其进行格式化。

将您的 SQL 更改为:

+ 'TO_CHAR(tr."createdOn" AT TIME ZONE \'+00:00:00\', \'yyyy-MON-dd\') as "createdOn" '

...或类似的东西(不确定语法,因为我没有使用 oracleMobile 数据库。


推荐阅读