谷歌窗体日历格式的日历事件问题
问题描述:
所以我有一个非常简单的形式,需要3个输入,标题,开始和结束日期。我试图用一个简单的脚本来产生一个日历事件。这可以在下面看到。谷歌窗体日历格式的日历事件问题
function onFormSubmit(e) {
var title = e.values[1];
var start_time = new Date(e.values[2]);
var end_time = new Date(e.values[3]);
CalendarApp.createEvent(title, start_time, end_time);
}
我的问题是,由于日期字符串是英国的格式(例如,2016年5月12日12:00:00)它记录的事件5月12日,而不是12月5日。
我对所有这一切都很陌生,所以我寻找一个优雅和简单的解决方案,我明白,不只是复制代码我不知道。
谢谢。
答
function convertUKDateToUSDate(date) {
const arr = date.split('/');
const temp = arr[0];
arr[0] = arr[1];
arr[1] = temp;
return arr.join('/');
}
将日期字符串转换前缀为 “DD/MM /” 到 “MM/DD/YYYY” 格式。 Split将字符串转换为数组,如[“DD”,“MM”,“YYYY HH:MM:SS”],然后临时变量用于在数组条目返回之前交换“MM”和“DD”以及用于分割它们的相同字符。你会最终onFormSubmit(e)
这样结束了:
function onFormSubmit(e) {
var title = e.values[1];
var start_time = new Date(convertUKDateToUSDate(e.values[2]));
var end_time = new Date(convertUKDateToUSDate(e.values[3]));
CalendarApp.createEvent(title, start_time, end_time);
}
显然我假设e.values[2]
和e.values[3]
都是字符串。如果它们已经是Date对象(或者如果您只想要更短的解决方案),那么请考虑使用Moment.js
(首要Date对象库)format
函数在这些格式之间进行转换。通常我会推荐使用Moment,但是你说你想要一些你能理解而不是复制的东西。