Google使用日期格式表示日历事件问题

时间:2016-12-05 17:45:36

标签: javascript

所以我有一个非常简单的表单,它有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);
}

我遇到的问题是,由于日期字符串是英国格式(例如05/12/2016 12:00:00),因此将事件记录为5月12日,而不是12月5日。

我是所有这一切的新手,所以我正在寻找一个我理解的优雅而简单的解决方案,而不仅仅是复制我没有的代码。

感谢。

1 个答案:

答案 0 :(得分: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,但是你说你想要的东西你可以理解而不是复制。