使用Utilities.formatDate()
function test_date_conversion_1() {
var in_d_str = "12/31/2017"
var new_d = Utilities.formatDate(new Date(in_d_str), "EET", "MM/dd/YYYY")
return new_d
}
// new_d = "12/31/2018" 2018?!
我尝试开发补丁并为此功能获得意外结果
function test_date_conversion(offset) {
//offset = 1
var in_d_str = "12/31/2017"
var in_d = new Date(in_d_str)
var in_d_epoch = in_d.getTime()
var in_d_epoch_dep_1 = in_d_epoch+offset
var in_d_d_dep_1 = new Date(in_d_epoch_dep_1)
var new_d = Utilities.formatDate(in_d_d_dep_1, "EET", "MM/dd/YYYY")
}
如果offset = 1则new_d =“12/31/2018”
如果offset =( - 1)则new_d =“12/30/2017”
所以1毫秒= 1年?
EET = GMT + 2 =脚本时区
工作表时区= GMT + 3
来自调试器的我注意到日期被Utilities.formatDate()破坏了
我已经完成了+/- 1小时,+ / - 1小时+/- 1秒的偏移,但从2017年12月31日起仍然无法从12/31进行。
我已经像这样打补丁了
if (new_d == "12/31/2018")
new_d = "12/31/2017";
但寻找可靠的解决方案。 谢谢你的回答。
答案 0 :(得分:2)
formatDate(date, timeZone, format)
的第三个参数是
SimpleDateFormat 规范
的格式
对于SimpleDateFormat,您在一周中使用Y
,在一年中使用y
。由于12/31/2017
周是2018年的第一周,因此将显示为2018年。
不使用"MM/dd/YYYY"
,而是使用"MM/dd/yyyy"
。