Safari中日期显示“Invalid Date”源于其不支持ISO 8601的T分隔符格式,需将系统及Safari语言设为简体中文首位、强制UTF-8编码、清除缓存并硬重载。

当你在Safari中打开Hexo博客、新闻站点或自建CMS页面时,发现文章发布时间显示为“Invalid Date”“NaN-NaN-NaN”或完全空白,而Chrome和Firefox一切正常——这大概率不是网站代码故障,而是macOS系统语言设置与Safari对ISO 8601日期格式(如2023-10-05T14:30:00Z)的解析冲突所致。Safari基于WebKit内核,不支持带2023-10-05 14:30:00格式,而系统语言顺序会间接影响其默认解析策略。
确认并修正系统首选语言顺序
系统语言列表首位决定了Safari初始化时的区域上下文,若繁体中文(如“繁体中文(台湾)”)排在简体中文之前,WebKit会启用繁体区域规则加载JavaScript运行时,进而触发日期解析失败。
第一步:点击左上角苹果菜单 → “系统设置” → “语言与地区”。
第二步:检查“首选语言”列表——若存在“繁体中文(台湾)”“繁体中文(香港)”等条目,【必须将其全部移除】,不要仅拖至底部;未添加简体中文则点击“+”号添加“简体中文”。
第三步:将“简体中文”拖拽至列表最顶端,弹出提示时选择“使用简体中文”。此操作会重置所有系统级文本渲染逻辑,包括JavaScript的Intl API默认locale。
第四步:重启Safari(右键Dock图标 → “退出”),再访问原网页验证日期是否恢复正常。若仍异常,继续下一步。
调整Safari内置语言偏好顺序
即使系统语言已设为简体中文,Safari仍可能通过独立的语言偏好列表向服务器发送Accept-Language头,诱导后端返回繁体资源包,其中常含未经兼容处理的ISO时间字段。
方法一(Mac):
打开Safari → 菜单栏“Safari” → “设置” → “网站”标签页 → 左侧选“语言”。
点击“添加语言”,搜索“简体中文”并添加;选中它后点“置顶”;对任何“繁体中文”条目点击“移除”。
方法二(iPhone/iPad):
“设置” → “Safari 浏览器” → “语言” → 点“编辑” → 长按“简体中文”拖至第一行 → 删除所有繁体中文条目。
完成设置后,刷新网页。若页面仍加载繁体版本,手动在地址栏末尾删除类似?lang=zh-TW或&locale=trad的参数再回车。
强制Safari使用UTF-8编码并禁用自动检测
当网页未声明charset或声明模糊时,Safari可能依据语言偏好切换编码解析路径,导致日期字符串中的T/Z被误判为控制字符而非分隔符,引发解析中断。
打开Safari顶部菜单栏 → “显示” → “文本编码” → 选择“Unicode (UTF-8)”。
接着进入“Safari” → “设置” → “高级” → 勾选“在菜单栏中显示‘开发’菜单”。
再次进入“高级”标签页 → 将“默认文本编码”设为“Unicode (UTF-8)” → 【取消勾选“自动检测网页编码”】。
此设置可切断语言偏好对字符解析的干扰链路,确保所有文本(包括内嵌JSON中的date字段)均以UTF-8字节流方式传递给JavaScript引擎。
清除网站数据与硬性重载
旧缓存中可能存有已被标记为“繁体环境可用”的损坏脚本,其中包含未经Safari兼容处理的日期格式化逻辑,不清除将覆盖新设置的效果。
点击Safari菜单栏 → “Safari” → “设置” → “隐私” → “管理网站数据”。
在搜索框输入问题网站域名(如yourblog.com),选中后点击“移除”;若多站复现,直接点“全部移除”。
返回“隐私”页 → 拉到底部点击“清空缓存”。
关闭Safari → 重新打开 → 访问目标网页 → 按住Option + Command + R执行硬性重载,强制重新拉取并执行最新脚本。