Javascript 解析 mysql 时间戳时出现输出问题

Javascript output issue when parsing mysql timestamp

我正在尝试根据 mysql 时间戳显示剩余时间。由于某种原因,输出为 -1 天 23 小时 59 分 59 秒。

<script type="text/javascript">
function update(datetime = "2021-07-15 20:24:42") {
    timeleft = new Date(datetime);
    now = new Date();
    secs = (timeleft - now) / 1000;
    days    = Math.floor(secs / (3600 * 24));
    hours   = Math.floor((secs - (days * (3600 * 24)))/3600);
    minutes = Math.floor((secs - (days * (3600 * 24)) - (hours * 3600)) / 60);
    seconds = Math.floor(secs - (days * (3600 * 24)) - (hours * 3600) - (minutes * 60));
    if (seconds < 0) {
        days = 0;
        hours = 0;
        minutes = 0;
        seconds = 0;
    }
    return  days+' days, '+ hours+' hours, '+minutes+' minutes, '+seconds+' seconds';
}
// time is pulled from database, but plugged in manually
member = Date("06-08-21 16:06:37");
alert("Left: "+update(member));
</script>

任何信息将不胜感激

1) 您可以使用 new Date() 创建新实例并传递有效日期。

2) 您正在使用 dd-mm-yy 格式,因此您应该使其有效,因为如果您直接传递它,它将转换日期

member = new Date(dateString); // 2021-06-08T10:36:37.000Z

即日期为 08,月份 = 06,因此您必须在从 new Date()

获取日期实例之前交换日期和月份值
const dateString = "06-08-21 16:06:37".replace(
  /(\d\d)-(\d\d)-(\d\d \d\d:\d\d:\d\d)/,
  `--`
);

function update(datetime = "2021-07-15 20:24:42") {
  timeleft = new Date(datetime);
  now = new Date();
  secs = (timeleft - now) / 1000;
  days = Math.floor(secs / (3600 * 24));
  hours = Math.floor((secs - days * (3600 * 24)) / 3600);
  minutes = Math.floor((secs - days * (3600 * 24) - hours * 3600) / 60);
  seconds = Math.floor(secs - days * (3600 * 24) - hours * 3600 - minutes * 60);
  if (seconds < 0) {
    days = 0;
    hours = 0;
    minutes = 0;
    seconds = 0;
  }
  return (
    days +
    " days, " +
    hours +
    " hours, " +
    minutes +
    " minutes, " +
    seconds +
    " seconds"
  );
}
// time is pulled from database, but plugged in manually
const dateString = "06-08-21 16:06:37".replace(
  /(\d\d)-(\d\d)-(\d\d \d\d:\d\d:\d\d)/,
  `--`
);
member = new Date(dateString);
console.log("Left: " + update(member));