如何使用 google 应用程序脚本将 date/time 格式从 yyyy-mm-ddT00:00:00Z 转换为 yyyy-mm-dd 00:00:00

How to convert date/time format from yyyy-mm-ddT00:00:00Z to yyyy-mm-dd 00:00:00 using google apps script

我使用应用程序脚本从 easypost api 中提取了交付 date/times。当我将 date/time 写入 sheet 时,格式错误。它是 yyyy-mm-ddT00:00:00Z,它说它是文本而不是日期。我需要帮助 运行 脚本来在数据达到 sheet 后进行更改。有人可以帮忙吗?

var parsed = JSON.parse(response.getContentText());
    activeSheet.getRange(i, 26).setValue(parsed.status);

if (parsed.status == 'delivered'){
  var deliveredEvents = parsed.tracking_details.filter(function (el) {
    return el.status == 'delivered';
  });

  if (deliveredEvents.length == 1) {
    activeSheet.getRange(i, 22).setValue(deliveredEvents[0].datetime);

sheet 中的日期如下所示:

交货日期 2022-03-18T16:03:42Z

如果日期字符串是构造函数可识别的格式,则:

activeSheet.getRange(i, 22).setValue(new Date(deliveredEvents[0])).setNumberFormat("yyyy-MM-dd");

如果它不能识别它,您可能必须提取完整的年、月和日期并自己创建 Date() 对象。您并没有真正格式化日期,您可以按照电子表格表示的方式格式化日期,或者您可以 post 将其作为字符串,在这种情况下它不再是 Date() 对象

根据您的示例:

let t = "1969-12-31".split('-');
let dt = new Date(t[0],t[1]-1,t[2]);

如果您使用的是 google 工作表,我建议您只使用单元格函数根据需要拆分 date/time,而不是使用应用程序脚本。

我首先通过执行 =SPLIT(A1,"T","") 吐出单元格,这给了我两个单元格,一个包含数据,一个包含时间 (+"Z")。您可以使用相同的方法轻松删除 Z。请注意,Z 代表 UTC 时间,因此 EasyPost 为您提供的时间戳被视为 UTC 时间。

示例: https://docs.google.com/spreadsheets/d/17fl5_KHkc9JuEO1eHe_DQIjo32JxNlqKnTC8yTvV0Vg/edit?usp=sharing