如何在日期对象中使用 24 小时格式?

how to use 24 hour format in date object?

在我的示例中,它以中午 12 点到下午的格式在日历时间内写入,我应该更改什么?是否可以制作自己的格式?例如,如果我想将 2021-01-27 8:00 更改为 2021.01.27 8:00

function myFunction1() {
  var calendar = CalendarApp.getCalendarById('callendar id');
      calendar.createEvent("my title",new Date ('2021-01-27 8:00'),new Date ('2021-01-27 13:00'));
  }

最重要的是,日期不知道它们是什么格式。这取决于环境和输出设置。

正确配置环境

在清单中指定正确的时区

您的项目清单必须设置一段时间。很重要。

根据需要自定义日历中的时间显示

你要记住日期不是我们看到的,它们是更复杂的信息对象。我们看到的是日期字符串。

让我们编码

下一个密码正确

calendar
  .createEvent(
    "my title",
    new Date('2021-01-27 8:00'),
    new Date('2021-01-27 13:00')
  );

因为调用的签名正确 new Date()

下一个密码也是正确的

calendar
  .createEvent(
    "my title2",
    new Date('2021-02-27 8:00'),
    new Date('2021-02-27 8:00')
  );

它创建了一个没有持续时间的事件。这可以。这符合逻辑。

要指定时间间隔,您需要指定中午时间或 24 小时格式:

calendar
  .createEvent(
    "my title2",
    new Date('2021-02-27 8:00'),
    new Date('2021-02-27 20:00')
  );

calendar
  .createEvent(
    "my title2",
    new Date('2021-02-27 8:00 AM'),
    new Date('2021-02-27 8:00 PM')
  );

通常,持续时间只是简单地添加到开始时间。那样

function createEvent() {
  var calendar = CalendarApp.getDefaultCalendar();
  const start = new Date('2021-02-27 8:00');
  const end = new Date(start);
  end.setHours(end.getHours() + 12);
  calendar
    .createEvent("my title2", start, end);
}

是的,您可以使用自己的格式来创建日期:

function createEvent() {
  var calendar = CalendarApp.getDefaultCalendar();
  const start = newDate('27.02.2021 8:00');
  const end = new Date(start);
  end.setHours(end.getHours() + 12);
  calendar
    .createEvent("my title2", start, end);
}

function newDate(string){
  const match = string.match(/(\d{1,2}).(\d{1,2}).(\d{4})\s+(\d{1,2}:\d{1,2})/);
  if(!match) throw new Error('Invalid string');
  return new Date(`${match[3]}-${match[2]}-${match[1]} ${match[4]}`);
}