【问题标题】:Round (epoch) time to highest minute循环(纪元)时间到最高分钟
【发布时间】:2020-05-05 01:46:19
【问题描述】:

我试图从 1 小时前获取纪元时间,四舍五入到最高分钟。 例如:19:17:01 应该变成 19:18:00 & 19:17:59 应该变成 19:18: 00

我已经知道如何将日期(减去 1 小时)转换为纪元:

var dat = new Date();
dat.setHours( dat.getHours() - 1 );
var epochstart = Date.parse(dat)
console.log(epochstart) //Returns e.g. 19:17:01 in epoch (Milliseconds) time

这一切正常,但我如何将日期四舍五入到分钟?

如果可能的话,我想将毫秒转换为秒(我可以删除最后 3 个字符)

【问题讨论】:

    标签: javascript date rounding epoch iso


    【解决方案1】:

    您设法更改小时的方式,同样,您可以更改分钟和秒。根据您的要求,以下是一个可能的解决方案:

    let dat = new Date();
    dat.setHours(dat.getHours() - 1);
    
    if (dat.getSeconds() > 0) {
      dat.setMinutes(dat.getMinutes() + 1);
      dat.setSeconds(0);
    }
    
    const epochstart = Date.parse(dat);
    
    console.log(dat.toString());
    console.log(epochstart);
    

    至于将毫秒转换为秒,请将epochstart 除以 1000。

    【讨论】:

      【解决方案2】:

      一种方法是将时间值向上舍入到最接近的整分钟,这也会同时将秒和毫秒归零:

      /* Set date to next full minute or current time
       * if at exctly 0 minutes and 0 milliseconds
       * @param {Date} date - start date
       * @returns {Date} new Date set to next full minute
      */
      function getNextFullMinute(date) {
        return new Date(date - (date % 6e4) + 6e4);
      }
      
      // Format options
      let dateOpts = {
        hour: 'numeric',
        minute:'2-digit',
        hour12: false
      };
      
      // Get a Date set to the start of the next minute
      let date = getNextFullMinute(new Date());
      console.log(`The next full minute is at ${date.toLocaleString(void 0, dateOpts)}.`);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-26
        • 1970-01-01
        • 1970-01-01
        • 2021-11-25
        • 2019-12-16
        • 1970-01-01
        • 2012-11-22
        相关资源
        最近更新 更多