2016-12-05 103 views
1

所以我有一个非常简单的形式,需要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日。

我对所有这一切都很陌生,所以我寻找一个优雅和简单的解决方案,我明白,不只是复制代码我不知道。

谢谢。

回答

0
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,但是你说你想要一些你能理解而不是复制的东西。