Google App Script中Unix时间戳转换报错,求问题排查与解决
解决
Utilities.formatDate()的报错问题 你遇到的错误原因很清晰:Utilities.formatDate()的第一个参数必须是Date类型的对象,但你传入的是字符串格式的Unix时间戳,这就导致方法找不到匹配的调用形式,直接触发了报错。
另外还要注意一个关键细节:你用的Unix时间戳(1572401067)是以秒为单位的,但JavaScript的Date构造函数需要的是毫秒数,所以必须先做单位转换。
修正后的代码如下:
function blah () { var tim = "1572401067"; // 将字符串时间戳转为数字,乘以1000得到毫秒数,再创建Date对象 var dateObj = new Date(parseInt(tim) * 1000); // 传入Date对象到formatDate方法中 var formattedDate = Utilities.formatDate(dateObj, "GMT+5:30", "MM-dd-yyyy HH:mm:ss"); Logger.log(formattedDate); }
额外小提示
- 如果你后续拿到的时间戳本身是数字类型(不是字符串),可以去掉
parseInt(),直接写成new Date(tim * 1000) - 时区参数也可以使用标准的时区标识符(比如
"Asia/Kolkata"),比"GMT+5:30"更准确,能避免夏令时等特殊场景的影响
内容的提问来源于stack exchange,提问作者user12297498
相关产品推荐
相关产品推荐

