这是之前做项目时遇到的问题,今天就总结、记录一下吧。
一直都有在做手机端的项目(微信小程序、vue移动端),然后最初时,遇到苹果手机时间格式化"NAN"问题。当时一脸懵,后来上网查了下才知道问题所在。
后台返回来的数据是createTime="2020-10-10 12:12:12"
iphone手机是不能对这种格式的时间进行格式化,需要把-改成/,也就是"2020/10/10 12:12:12"。如下方法可以解决这个问题。调用:formatDate(time, "yyyy-MM-dd")
//时间格式化
function formatDate(date, fmt) {
if (date == null || date == '' || date == undefined)
return null;
try {
//解决ios手机时间格式化NAN问题
if(typeof(date) == "string" && date.indexOf('-') != -1){
date = date.replace(/-/g,'/');
}
date = new Date(date);
} catch (e) {
date = date;
}
fmt = fmt ? fmt : 'yyyy-MM-dd';
var o = {
"M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日
"H+": date.getHours(), //小时
"m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
建议:为了避免这个问题,建议让后台返回的是时间戳