日期的兼容性
- iOS下
new Date('2020-03-11 00:00:00')不生效,可以使用new Date(2020,03,11,0,0,0')替代,也可以对日期进行date.replace(/-/g, '/')处理。
/**
* 在保险期为1年的规则下,获取终保日期的值
* @param {起保日期} start_date
*/
const getEndDate = (start_date) => {
if (!start_date) {
return '';
}
//eg:start_date='2020-03-11 00:00:00' =>'2021-03-11 00:00:00'
let tempDate = start_date.replace(/^[1-9][0-9]{3}-/g, `${Number(start_date.substring(0, 4)) + 1}-`);
//iOS不兼容new Date('2020-03-11 00:00:00'),可以使用new Date(2020,03,11,0,0,0')
//也可以使用 replace(/-/g, '/')
tempDate = tempDate.replace(/-/g, '/');
//eg:=>'2021-03-10 23:59:59'
tempDate = new Date(new Date(tempDate).getTime() - 1);
return dateFormat(tempDate);
}
/**
* 对日期进行格式化:yyy-mm-dd hh:mm:ss
* @param {日期类型的日期} date
*/
const dateFormat = (date) => {
if (!date) {
return '';
}
if (!(date instanceof Date)) {
return date;
}
var y = date.getFullYear();
var mon = date.getMonth() + 1;
var d = date.getDate();
var h = date.getHours();
var m = date.getMinutes();
var s = date.getSeconds();
h = (h < 10) ? ('0' + h) : h;
m = (m < 10) ? ('0' + m) : m;
s = (s < 10) ? ('0' + s) : s;
return `${y}-${mon}-${d} ${h}:${m}:${s}`;
}
事件兼容性
ios下beforeunload事件废弃了,需要使用pagehide事件替代。
window.addEventListener("beforeunload",()=>{
setRootSessionItem(this.$store.state);
});
//IOS废弃了beforeunload事件,故用下面的代替
window.addEventListener("pagehide",()=>{
setRootSessionItem(this.$store.state);
})
目前遇到的就这几个,持续更新~~~
本文主要讨论了在前端开发中遇到的iOS设备日期兼容性问题,提出了使用newDate(年,月,日,小时,分钟,秒)格式创建日期对象以及通过替换短横线来解决日期字符串解析的方案。此外,还提到了iOS下beforeunload事件被废弃,推荐使用pagehide事件替代以保持事件兼容性。

被折叠的 条评论
为什么被折叠?



