Google表格脚本中Utilities.formatDate及时区失效,法语日期输出异常
问题原因及解决方案
这是因为Google Apps Script(GAS)的服务器端运行环境和浏览器(比如Safari)的客户端环境在本地化支持上存在差异,同时GAS的日期格式化行为不仅依赖时区,还和项目的语言设置直接相关:
1. Utilities.formatDate输出英文的原因
Utilities.formatDate里的EEEE(星期全称)和MMMM(月份全称)的本地化结果,是由脚本项目的语言设置决定的,而非你指定的时区。你虽然把时区设为巴黎,但脚本默认语言大概率还是英语,所以输出了英文的星期和月份。
2. toLocaleDateString在GAS中失效的原因
Safari作为浏览器客户端,自带了完整的多语言本地化资源;但GAS的V8运行环境在处理toLocaleDateString时,若不明确指定时区参数,可能会默认使用UTC时区(或未正确匹配语言的脚本时区),而且早期GAS对部分区域设置的支持需要显式配置才能生效。
解决方案
针对Utilities.formatDate的修复
修改脚本项目的语言设置为法语即可:
- 打开脚本编辑器,点击右上角的齿轮图标(设置)
- 切换到「常规设置」标签
- 在「语言」下拉菜单中选择「Français」
- 保存设置后重新运行脚本,
Utilities.formatDate就会输出法语格式的日期了。
针对toLocaleDateString的修复
在配置项中显式添加timeZone参数,确保GAS同时匹配正确的时区和语言本地化规则:
var timezone = "Europe/Paris"; var date = new Date(2018,1,5,15,01,0,0); dateString = date.toLocaleDateString("fr-FR", { weekday: "long", year: "numeric", month: "long", day: "numeric", timeZone: timezone // 显式指定时区 }); Logger.log(dateString); // 此时会输出 "lundi 5 février 2018"
内容的提问来源于stack exchange,提问作者Julien hadim
相关产品推荐
相关产品推荐

