【问题标题】:Convert Julian Date to Normal Date in Node.js for IBM DB2 iSeries在 IBM DB2 iSeries 的 Node.js 中将 Julian 日期转换为普通日期
【发布时间】:2017-04-05 21:48:52
【问题描述】:

在我的一个应用程序开发中,我使用了 IBM DB2 iSeries 数据库,并使用 Progress 提供的 DataDirect 技术与 db2.jar 连接。在数据库中,存储为 7 位 Julian 格式的日期,我必须将其转换为 Node.js 中的时间戳,因为我的数据层已经在 Node.js 中实现,必须部署在 Apigee 上。 我需要一个通用的解决方案,可以在 SQL 查询级别以及 Node.js 中将此儒略日期转换为普通日期

儒略日期的示例是 1160920,这对应于 2016-09-20。

【问题讨论】:

  • 你是不是先google了? StackOverflow 上有很多答案,用搜索就行了。
  • 无论您所说的“儒略日期”是什么意思,1160920 都不可能对应于公历中的 2016 年 9 月 20 日。
  • 这不是儒略日期,它是一个常规日期,只有 7 位数字存储为 CYYMMDD。

标签: javascript node.js db2 apigee


【解决方案1】:

经过大量调查,我为 SQL 级别和 node.js 级别提供了一个解决方案。

要使用 SQL 查询将 7 位儒略日期转换为普通日期,您可以使用以下 IBM DB2 iSeries 数据库查询 -

SELECT DATE(((1160920 /10000)+1900)|| '-' ||
(MOD(1160920 ,10000) /100)|| '-' ||
MOD(1160920 ,100))
FROM
SYSIBM.SYSDUMMY1

要使用 node.js 执行相同的转换,请使用以下代码,它将完美转换

var dateFormat = require('dateformat');
function julianIntToDate(n) {

    var yy = ((n/10000)+1900);
    var year = Math.floor(yy);
    var mm = ((n % 10000)/100);
    var mon = Math.floor(mm);
    mon = leadingZero(mon);
    var dd = (n % 100);
    dd = leadingZero(dd);
    console.log("Year--"+year);
    console.log("Month--"+mon);
    console.log("Day--"+dd);

    var now = new Date(year+"-"+mon+"-"+dd);
    console.log("Converted Date-->"+now);
    orderDate = dateFormat(now, "yyyy-mm-dd'T'HH:mm:ss-0500");
    return (orderDate);

    function leadingZero(value) {
    if (value < 10) {
    return "0" + value.toString();
    }
    return value.toString();
    }
}
console.log("Julian Date--->"+1160920);
console.log("Normal Date--->"+julianIntToDate(1160920).toString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2019-07-23
    • 2021-12-14
    相关资源
    最近更新 更多