【问题标题】:Time until midnight CST?到 CST 午夜的时间?
【发布时间】:2017-03-08 04:58:55
【问题描述】:

我有这段代码可以根据用户计算机的时间计算直到午夜 CST 的毫秒数。
对于我所在的时区,now.getTimezoneOffset() 返回 420,使 tmzOfst 为 60。

function millisToMidnight() {
  var now = new Date();
  var tmzOfst = (now.getTimezoneOffset())-360; //-360 minutes = CST
  now.setHours(-(tmzOfst/60));// Adjust 'now' to CST time
  var then = new Date(now);   //make a var same as now
  then.setHours(24, 0, 0, 0); //set to midnight
  return (then - now);        //calculate difference
}

但是,当我运行这个(console.log 无处不在)时,我得到了这个:

Now = Tue Mar 07 2017 21:51:05 GMT-0700 (Mountain Standard Time) 
tmzOfst = 120
Then = Mon Mar 06 2017 22:51:05 GMT-0700 (Mountain Standard Time)

正如您所见,它正确地将时间更改为 CST,但是,它最终也会更改一天的日期。有没有更简单的方法来做到这一点?为什么会变天?

【问题讨论】:

    标签: javascript time


    【解决方案1】:

    如果你想调整小时,你需要调整,而不是设置

    now.setHours(now.getHours()-(tmzOfst/60));
    

    【讨论】:

      【解决方案2】:

      这应该为您提供即将到来的午夜的毫秒数。

      function millisToMidnight() {
          var date = new Date();
          date.setDate(date.getDate() + 1);
          date.setHours(0);
          date.setMinutes(0);
          date.setSeconds(0);
          return date.getTime() - (new Date()).getTime();
      }
      

      【讨论】:

      • 你忘了毫秒,顺便说一句
      • 另外,您的代码没有像问题那样考虑时区
      猜你喜欢
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多