You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS系统下JavaScript解析日期后星期几显示undefined问题求助

异常原因

iOS端所有浏览器均使用WebKit内核,其Date构造函数对日期字符串的解析规则和Windows、安卓端的V8内核(Chrome、Edge等浏览器使用)存在差异:你拼接得到的21-6-2021(DD-MM-YYYY)格式字符串,在WebKit内核下无法被识别为有效日期,new Date(alignedDate)会返回Invalid Date,调用getDay()方法时返回NaN,用NaN作为数组下标取值自然得到undefined。

修复方案

最稳妥的方案是直接向Date构造函数传入年、月、日三个数值参数,完全规避不同内核的字符串解析规则差异,该写法符合ECMAScript标准,全平台兼容。注意Date构造函数的月份参数从0开始计数,所以原API返回的月份需要减1。

修正后的代码如下:

const weekDays: string[] = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];

// 该部分代码包含在get请求逻辑中
const dateFormatAPI = (response.data.list[0].dt_txt).split("-") // 6-21-2021 -> ["月", "日", "年"]
const date = new Date(
  Number(dateFormatAPI[2]), // 年
  Number(dateFormatAPI[0]) - 1, // 月份从0开始计数,需减1
  Number(dateFormatAPI[1]) // 日
);

console.log(weekDays[date.getDay()])

如果更偏好传入日期字符串的写法,可以将字符串拼接为YYYY/MM/DD格式(如2021/6/21),该格式的兼容性远高于带横杠的日期格式,可适配绝大多数浏览器。

内容的提问来源于stack exchange,提问作者niko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:30:01