Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 日期代码只能在chrome中使用_Javascript_Jquery_Date_Time - Fatal编程技术网

Javascript 日期代码只能在chrome中使用

Javascript 日期代码只能在chrome中使用,javascript,jquery,date,time,Javascript,Jquery,Date,Time,问题是这个程序只能在Chrome中工作,无论我使用什么日期格式,或者当我使用解析日期时,它都会返回NaN 该程序从1970年1月1日起将两个日期(常数和某个假日)转换为毫秒。比较并减去日期。然后,它们被分割并四舍五入为秒,直到日期。我认为问题在于日期的确定。我不想搞时区 答案中的jQuery很好。正则表达式很好,但我不懂 如果答案能有有效的证据,那就太酷了。谢谢 html是(最重要的) 代码是 $(document).ready(function() { var date = new

问题是这个程序只能在Chrome中工作,无论我使用什么日期格式,或者当我使用解析日期时,它都会返回NaN

该程序从1970年1月1日起将两个日期(常数和某个假日)转换为毫秒。比较并减去日期。然后,它们被分割并四舍五入为秒,直到日期。我认为问题在于日期的确定。我不想搞时区

答案中的jQuery很好。正则表达式很好,但我不懂

如果答案能有有效的证据,那就太酷了。谢谢

html是(最重要的)

代码是

$(document).ready(function() {
  var date = new Date();
  var year = date.getFullYear();
  console.log(year + "-12-25");
  var christmasdate = new Date(year + "-12-24 24:00:00");
  $("#output").css("font-size","20px");
  $("#output").html("If this lasts more than a second, something is wrong.");
  setInterval(function() {
    date = new Date();
    var curr_time = date.getTime();
    var xmas_time = christmasdate.getTime();
    var time_left = Math.round((xmas_time - curr_time) / 1000);
    var output;
    if (time_left < 0) {
      output = "Christmas was " + Math.abs(time_left) + " seconds ago."
    }
    else {
      output = "There is " + time_left + " seconds until christmas eve.";
    }
    if (time_left == 1) {
      output = "There is " + time_left + "second until christmas eve.";
    }
    $("#output").html(output);
    var bodyheight = $(document).height();
    var allheight = $("body").height();
    $("h2").css("margin-top",(bodyheight / 2) - (allheight / 2))
  }, 1000);
});
$(文档).ready(函数(){
变量日期=新日期();
var year=date.getFullYear();
控制台日志(年份+“-12-25”);
var christmasdate=新日期(年+“-12-24 24:00:00”);
$(“#输出”).css(“字体大小”,“20px”);
$(“#output”).html(“如果持续时间超过一秒钟,则说明有问题。”);
setInterval(函数(){
日期=新日期();
var curr_time=date.getTime();
var xmas_time=christmasdate.getTime();
var time\u left=数学整轮((圣诞节时间-当前时间)/1000);
var输出;
如果(左时间<0){
output=“圣诞节是”+Math.abs(剩余时间)+“秒前。”
}
否则{
output=“离平安夜还有“+时间”+”秒。”;
}
如果(左时间==1){
output=“还有“+时间+”秒到圣诞夜。”;
}
$(“#输出”).html(输出);
var bodyheight=$(文档).height();
var allheight=$(“body”).height();
$(“h2”).css(“页边空白顶部”(bodyheight/2)-(allheight/2))
}, 1000);
});
链接是来自MDN的。

由于解析日期字符串时存在差异,建议始终手动解析字符串,因为结果不一致,特别是在不同的ECMAScript实现中,“2015-10-12 12:00:00”等字符串可能被解析为NaN、UTC或本地时区

而不是

var christmasdate = new Date(year + "-12-24 24:00:00");
您可以改为使用:

var christmasdate = new Date(year,11,24,24,0,0);
哪一次旅行被计算为

Mon Dec 25 2017 00:00:00 GMT-0500 (EST)
来自MDN:

由于解析日期字符串时存在差异,建议始终手动解析字符串,因为结果不一致,特别是在不同的ECMAScript实现中,“2015-10-12 12:00:00”等字符串可能被解析为NaN、UTC或本地时区

而不是

var christmasdate = new Date(year + "-12-24 24:00:00");
您可以改为使用:

var christmasdate = new Date(year,11,24,24,0,0);
哪一次旅行被计算为

Mon Dec 25 2017 00:00:00 GMT-0500 (EST)

你对今年圣诞节的计算似乎过于复杂,而且容易出错。您当然不应该使用日期构造函数来解析字符串(或者Date.parse,它们在解析时是等效的)

考虑以下内容,它为当前年份的圣诞节早晨00:00:00创建了一个日期

var圣诞=新日期();
圣诞节。设定时间(0,0,0,0);
圣诞节。设定月(11,25);

console.log(christmas.toString())您对今年圣诞节的计算似乎过于复杂且容易出错。您当然不应该使用日期构造函数来解析字符串(或者Date.parse,它们在解析时是等效的)

考虑以下内容,它为当前年份的圣诞节早晨00:00:00创建了一个日期

var圣诞=新日期();
圣诞节。设定时间(0,0,0,0);
圣诞节。设定月(11,25);

console.log(christmas.toString())
24:00:00
看起来不是有效时间。@cartant它的有效时间为00:00:00(请参阅:“HH…00到24之间的两个十进制数字”)。但是,由于实现之间的不一致性,即使它们试图符合ECMA-262,也强烈反对使用日期构造函数分析字符串。@RobG对此表示感谢。
24:00:00
看起来不是有效时间。@cartant它的有效时间为00:00:00(请参阅:“HH…00到24之间的两个十进制数字”)。但是,由于实现之间的不一致性,即使它们试图符合ECMA-262的要求,也强烈反对使用日期构造函数解析字符串。@RobG对此表示感谢。但最好使用
新日期(11,25)
以避免混淆。;-)但最好使用
新日期(11,25)
以避免混淆