Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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与桌面Safari的兼容性_Javascript_Date_Datetime_Safari - Fatal编程技术网

Javascript与桌面Safari的兼容性

Javascript与桌面Safari的兼容性,javascript,date,datetime,safari,Javascript,Date,Datetime,Safari,我编写了以下代码,用于根据日期显示不同的图像(现在这个示例只是控制台记录一条消息)。这段代码在Mac上的Chrome和Firefox中运行良好,但在Safari上无法正常运行或出现任何错误(在Safari中,消息不会因日期而改变,只是显示相同的消息)。Safari的处理方式有什么不同?我怎样才能在Safari上用最少的改动实现这个功能 代码如下: /*更改这些日期*/ var ddt=新日期(“2019年8月22日”); var pre=新日期(“2019年8月23日”); var ton=

我编写了以下代码,用于根据日期显示不同的图像(现在这个示例只是控制台记录一条消息)。这段代码在Mac上的Chrome和Firefox中运行良好,但在Safari上无法正常运行或出现任何错误(在Safari中,消息不会因日期而改变,只是显示相同的消息)。Safari的处理方式有什么不同?我怎样才能在Safari上用最少的改动实现这个功能

代码如下:

/*更改这些日期*/
var ddt=新日期(“2019年8月22日”);
var pre=新日期(“2019年8月23日”);
var ton=新日期(“2019年8月26日”);
var post=新日期(“2019年8月27日”);
//今天的日期
var currDate=新日期();
var mm=currDate.getMonth()+1;
var dd=currDate.getDate();
var yyyy=currDate.getFullYear();
//获取日期部件
var ddtDay=ddt.getDate();
var ddtMonth=ddt.getMonth()+1;
var ddtYear=ddt.getFullYear();
//日志(ddtYear、ddtMonth、ddtDay);
var preDay=pre.getDate();
var preMonth=pre.getMonth()+1;
var preYear=pre.getFullYear();
//控制台日志(年前、月前、日前);
var tonDay=ton.getDate();
var tonMonth=ton.getMonth()+1;
var tonYear=ton.getFullYear();
//控制台日志(tonYear、tonMonth、tonDay);
var postDay=post.getDate();
var postmounth=post.getMonth()+1;
var postYear=post.getFullYear();
//日志(年后、月后、日后);
//格式化日期部分
如果(DDT日<10){
ddtDay='0'+ddtDay;
}
如果(滴滴涕月<10){
ddtMonth='0'+ddtMonth;
}
如果(日前<10){
日前='0'+日前;
}
如果(前一个月<10){
前置月='0'+前置月;
}
如果(星期一<10){
tonDay='0'+tonDay;
}
如果(月<10){
tonMonth='0'+tonMonth;
}
如果(后天<10){
postDay='0'+postDay;
}
如果(月<10){
邮政月='0'+邮政月;
}
如果(dd<10){
dd='0'+dd;
}
如果(毫米<10){
毫米='0'+毫米;
}
变量ddtF=(ddtYear+'-'+ddtMonth+'-'+ddtDay);
var preF=(年初+'-'+月初+'-'+日前);
变量tonF=(tonYear+'-'+tonMonth+'-'+tonDay);
var postF=(年后+'-'+月后+'-'+日后);
当前变量=(yyyy+'-'+mm+'-'+dd);
控制台日志(ddtF);
控制台日志(preF);
控制台日志(tonF);
console.log(postF);
console.log(今天);
//逻辑
如果(今天>=postF){
console.log('post');
}否则如果(今天===tonF){
console.log('ton');
}否则如果(今天=preF){
console.log('pre');
}否则,如果(今天)2019,8,22不是可移植的日期格式,
date
构造函数有一个可移植的调用序列,在该序列中,您可以将日期的每个组成部分作为单独的参数,因此使用

var ddt = new Date(2019, 7, 22);
对于所有其他变量也是如此

记住,在JavaScript中,月份是从0开始计算的,因此需要从month参数中减去1(八月是7)

/*更改这些日期*/
var ddt=新日期(2019年7月22日);
var pre=新日期(2019年7月23日);
var ton=新日期(2019年7月26日);
var post=新日期(2019年7月27日);
//今天的日期
var currDate=新日期();
var mm=currDate.getMonth()+1;
var dd=currDate.getDate();
var yyyy=currDate.getFullYear();
//获取日期部件
var ddtDay=ddt.getDate();
var ddtMonth=ddt.getMonth()+1;
var ddtYear=ddt.getFullYear();
//日志(ddtYear、ddtMonth、ddtDay);
var preDay=pre.getDate();
var preMonth=pre.getMonth()+1;
var preYear=pre.getFullYear();
//控制台日志(年前、月前、日前);
var tonDay=ton.getDate();
var tonMonth=ton.getMonth()+1;
var tonYear=ton.getFullYear();
//控制台日志(tonYear、tonMonth、tonDay);
var postDay=post.getDate();
var postmounth=post.getMonth()+1;
var postYear=post.getFullYear();
//日志(年后、月后、日后);
//格式化日期部分
如果(DDT日<10){
ddtDay='0'+ddtDay;
}
如果(滴滴涕月<10){
ddtMonth='0'+ddtMonth;
}
如果(日前<10){
日前='0'+日前;
}
如果(前一个月<10){
前置月='0'+前置月;
}
如果(星期一<10){
tonDay='0'+tonDay;
}
如果(月<10){
tonMonth='0'+tonMonth;
}
如果(后天<10){
postDay='0'+postDay;
}
如果(月<10){
邮政月='0'+邮政月;
}
如果(dd<10){
dd='0'+dd;
}
如果(毫米<10){
毫米='0'+毫米;
}
变量ddtF=(ddtYear+'-'+ddtMonth+'-'+ddtDay);
var preF=(年初+'-'+月初+'-'+日前);
变量tonF=(tonYear+'-'+tonMonth+'-'+tonDay);
var postF=(年后+'-'+月后+'-'+日后);
当前变量=(yyyy+'-'+mm+'-'+dd);
控制台日志(ddtF);
控制台日志(preF);
控制台日志(tonF);
console.log(postF);
console.log(今天);
//逻辑
如果(今天>=postF){
console.log('post');
}否则如果(今天===tonF){
console.log('ton');
}否则如果(今天=preF){
console.log('pre');

}否则如果(今天,您好,谢谢Barmar。不幸的是,这不起作用。进行此更改实际上停止了Chrome和Firefox中的代码工作,也没有在Safari中修复它。而原始代码在Chrome和Firefox中工作。我只是在Chrome和Safari中尝试了我的代码片段,得到了相同的结果。您好,Barmar,我刚刚在Safari中重新测试了它,效果非常好。)。非常感谢。您能解释一下这应该做什么吗?它的哪一部分在Safari中不起作用?看起来有很多代码与问题无关,您能把它缩小到一个吗?像“2019,8,22”这样的时间戳不是ECMA-262支持的格式,所以解析依赖于实现(即,符合要求的结果可能是正确的分析、错误的分析或无效的日期)。