问题:IOS/safari设备上,接口返回日期为字符串格式「 yyyy-MM-dd hh:mm:ss」, 经过new Date(str)后会出现Nan
解决:将分隔符 " - " 转为 " / "
▍日期格式化
Date.prototype.Format = function (fmt) { //author: meizz
const o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"h+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (let 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;
};
▍格式化前进行数据处理
var formatDate = function (dateStr, formatter) {
if (!dateStr) {
return "";
}
if (typeof dateStr === "string") {
if (dateStr.indexOf(".") > -1) {
// 有些日期接口返回带有.0。
dateStr = dateStr.substring(0, dateStr.indexOf("."));
}
// 解决IOS上无法从dateStr parse 到Date类型问题
dateStr = dateStr.replace(/-/g, '/');
}
return new Date(dateStr).Format(formatter);
};
▍调用方式
// 将 1980-02-03 22:22:22 格式化成 1980年02月03日
var result = formatDate('1980-02-03 22:22:22', 'yyyy年MM月dd日');
网友评论