javascript - 如何在 Google Apps 脚本中格式化 "2018-09-21 16:00:00 -0500"?

标签 javascript date google-apps-script google-sheets

我的日期格式为“yyyy-mm-dd hh:MM:ss timezone”(即“2018-09-21 16:00:00 -0500”),使用代码时:

var d = new Date("2018-09-21 16:00:00 -0500")

调试告诉我

d = Invalid Date

我正在尝试按如下方式重新格式化日期,

var days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];


var day = days[d.getDay()];
var hh = d.getHours();
var mm = d.getMinutes()

if(hh < 10) {hh = "0"+hh}
if(mm < 10) {mm = "0"+mm}

return day+" "+hh+mm

格式化此日期的最佳方式是什么?

最佳答案

  • 您想要解析 yyyy-mm-dd hh:MM:ss timezone 的字符串值作为日期对象。

如果我的理解是正确的,这个答案怎么样?我认为针对您的情况有几个答案。所以请将此视为其中之一。

当我看到这个格式时,我以为 RFC3339与格式接近。那么下面的流程怎么样?

  1. 将值除以 这是一个空格。
  2. 用“T”连接分割值的第一个和第二个元素。
  3. 将最后一个元素添加到连接值中。

何时 2018-09-21 16:00:00 -0500用于此流程,该值将转换为2018-09-21T16:00:00-0500 。这可以用作 RFC3339 类型。通过此流程,yyyy-mm-dd hh:MM:ss timezone可以解析为日期对象。

示例脚本:

模式 1:

反射(reflect)上述流程的示例脚本如下。

var str = "2018-09-21 16:00:00 -0500"; // yyyy-mm-dd hh:MM:ss timezone

var ar = str.split(" "); // Added
var str = ar.slice(0, 2).join("T") + ar[2]; // Added: Here str is "2018-09-21T16:00:00-0500".
var d = new Date(str);

var days = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
var day = days[d.getDay()];
var hh = d.getHours();
var mm = d.getMinutes()
if(hh < 10) {hh = "0"+hh}
if(mm < 10) {mm = "0"+mm}

Logger.log(day+" "+hh+mm) // Added

return day+" "+hh+mm

模式 2:

作为另一种模式,这个脚本怎么样?在 Google Apps 脚本中,您还可以使用 Utilities.formatDate() .

var str = "2018-09-21 16:00:00 -0500";
var ar = str.split(" ");
var r = ar.slice(0, 2).join("T") + ar[2];
var d = new Date(r);
var res = Utilities.formatDate(d, Session.getScriptTimeZone(), "E hhmm").toUpperCase();
Logger.log(res)

注意:

  • 如果格式与 yyyy-mm-dd hh:MM:ss timezone 不同,这个脚本可能无法使用。请注意这一点。

引用:

如果我误解了你的问题,我很抱歉。

关于javascript - 如何在 Google Apps 脚本中格式化 "2018-09-21 16:00:00 -0500"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52419046/

相关文章:

google-apps-script - 是否可以在 Google Sheet Add On 中创建时间驱动的触发器?

javascript - 属性 'submitAction' 在类型 '{}' 中缺失,但在类型中需要

javascript - Node.js 中的包和模块有什么区别

javascript - 如何在js中修复 "swapping stylesheet function"

javascript - 存储日期,就好像它们是在特定时区输入的一样

php - 如何将数据分组为从周一到周日开始的周

php - 当前日期减去 4 个月?

google-apps-script - 是否可以将编辑器的用户名写入 Google Docs 电子表格中的单元格

google-apps-script - Google Apps Script - 根据单元格值查找行号

javascript - 如何通过 JS 嵌入代码嵌入 HTML