【问题标题】:convert (date and timestamp from postgresql) to javascript time将(来自 postgresql 的日期和时间戳)转换为 javascript 时间
【发布时间】:2020-06-06 06:57:52
【问题描述】:

我在 PostgreSQL 表中有两列(开始日期(日期格式)和取消日期(时间戳格式))。一个是日期格式,另一个是时间戳格式。我想得到天数中两个值之间的差异。我正在用 javascript 发送数据。

如何在javascript中计算天数的差异?例如,一个值为 2010-10-14。第二个值是 2010-10-16 04:05:06。相差 3 天。

我的问题是我在 API 响应中以 PostgreSQL(日期和时间戳)格式获取这两个值。一个简单的区别在 javascript 中不起作用(start_date-cancellation_date)。

【问题讨论】:

    标签: javascript postgresql datetime timestamp epoch


    【解决方案1】:

    Javascript 日期对象在转换为毫秒之前无法进行比较。

    var now = new Date(); // create new date - today
    var then = new Date(now.getDate()+5); // create new date that's now + 5 days (bad variable name, sry)
    var nowAdj = now.getTime(); // now adjusted to milliseconds
    var thenAdj = then.getTime(); // then adjusted to milliseconds
    var differenceInDays = Math.round((thenAdj - nowAdj)/(1000*60*60*24)) // Subtract now from then and multiply the results by the magic formula to return milliseconds to days.
    

    编辑:清理了一下,“then”仍然是一个糟糕的变量名;)

    【讨论】:

      【解决方案2】:

      您可以将日期转换为新的日期对象并计算差值如下:

              var date1 = new Date("2010-10-14");
              var date2 = new Date("2010-10-16 04:05:06");
              var timeDiff = Math.abs(date2.getTime() - date1.getTime());
              var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
              console.log(diffDays);

      【讨论】:

      • @sulil lama 对于某些日期 javascript 控制台打印无效日期。
      • @code0079,当您的日期字符串为空时,新日期将默认为 1970,它将不起作用。保存到数据库并从数据库中检索时,您需要确保您的日期有效..
      猜你喜欢
      • 2013-03-02
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2014-08-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多