Javascript 日期时间在Safari上未显示为NaN

Javascript 日期时间在Safari上未显示为NaN,javascript,ios,safari,mobile-safari,Javascript,Ios,Safari,Mobile Safari,正在学习JS,并且已经学会了如何进行简单的倒计时。问题是我最近改为倒计时到datetime,而不仅仅是date,现在iOS Safari显示倒计时为“NaN”秒,等等,我不知道为什么。(见附件) 日期是从php中的sql db中提取的。此页面上唯一使用的js im用于倒计时。 代码如下 <script> // Set date to countdown til var countDownDate = new Date("<?php echo $dbDate; ?>

正在学习JS,并且已经学会了如何进行简单的倒计时。问题是我最近改为倒计时到datetime,而不仅仅是date,现在iOS Safari显示倒计时为“NaN”秒,等等,我不知道为什么。(见附件)

日期是从php中的sql db中提取的。此页面上唯一使用的js im用于倒计时。 代码如下

<script>
// Set date to countdown til
var countDownDate = new Date("<?php echo $dbDate; ?>").getTime();

// Update every second
var x = setInterval(function() {

  // Get current date and time
  var now = new Date().getTime();

  // Calculate distance between then and now
  var distance = countDownDate - now;

  // Calculations for days, hours, minutes and seconds
  var days = Math.floor(distance / (1000 * 60 * 60 * 24));
  var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
  var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
  var seconds = Math.floor((distance % (1000 * 60)) / 1000);

  // Output result with id="countdown"
  document.getElementById("countdown-top").innerHTML = days + "d : " + hours + "h";
  document.getElementById("countdown-bottom").innerHTML = minutes + "m : " + seconds + "s ";

  // If countdown ended show text
  if (distance < 0) {
    clearInterval(x);
    document.getElementById("countdown-top").innerHTML = "Coutdown Has Ended,";
    document.getElementById("countdown-bottom").innerHTML = "Not Long Left!";
  }
}, 1000);
</script>

//将日期设置为倒计时直到
var countDownDate=新日期(“”.getTime();
//每秒钟更新一次
var x=setInterval(函数(){
//获取当前日期和时间
var now=new Date().getTime();
//计算当时和现在之间的距离
var距离=倒计时日期-现在;
//计算天、小时、分钟和秒
变量天数=数学楼层(距离/(1000*60*60*24));
可变小时数=数学楼层((距离%(1000*60*60*24))/(1000*60*60));
var分钟=数学楼层((距离%(1000*60*60))/(1000*60));
var秒=数学楼层((距离%(1000*60))/1000);
//id为“倒计时”的输出结果
document.getElementById(“倒计时顶部”).innerHTML=days+“d:”+hours+“h”;
document.getElementById(“倒数底部”).innerHTML=minutes+m:+seconds+s;
//如果倒计时结束,则显示文本
如果(距离<0){
净间隔(x);
document.getElementById(“倒计时顶部”).innerHTML=“Coutdown已结束,”;
document.getElementById(“倒计时底部”).innerHTML=“左不长!”;
}
}, 1000);

这里的主要问题是,
$dbDate
是以Safari无法解析的格式提供的。根据StackOverflow的其他问题,我建议您使用。更具体地说,使用该库的。这个库还有另一个有用的实用程序,我认为它将适合您的代码并使其更具可读性


您还可以尝试提供Safari可以理解的格式,可能是ISO8601。您必须在PHP中更改它,以便
$dbDate
是有效的ISO日期。这可能适用于某些Safari版本,但我建议您使用date fns之类的库,这样您就可以获得更广泛的浏览器支持。

您能否提供
$dbDate
的示例值?似乎Safari无法解析该格式。@Joannicornell$dbDate等于字符串“2020-10-15 19:30:00”。我已将日期重新格式化为ISO格式,它已修复了现代Safari上的问题。现在我要学习如何使用date fns libaray。谢谢你的帮助,太好了!很高兴这有帮助。如果你认为这是正确的答案,那么就把它标记出来,这样其他人就可以很容易地找到它。