如何将字符串转换为ISOString?

时间:2016-07-29 02:13:44

标签: javascript google-apps-script google-calendar-api

我有3个变量:(1)Date(2)StartTime(3)EndTime 我想将它们作为两个变量(1)Date和StartTime(2)Date和EndTime,以便我可以创建一个Google日历事件。

根据我的理解,为了创建Google日历活动,我需要传递ISO字符串格式以用于事件计时。任何人都可以检查下面的代码并帮助我找到丢失的部分。

 function createEvent(title,Dt,startTime,endTime,col) {
 var calendarId = '_____@group.calendar.google.com';
 Logger.log(Dt); //2016-07-21
 Logger.log(startTime); // 11:55 AM
 Logger.log(typeof(startTime)); //string


 //Help Needed to convert + to ISO

 var event = {
 summary: title,
 start: {
 dateTime: startISO
 },
 end: {
 dateTime: endISO
 },
 colorId: col
 };
 event = Calendar.Events.insert(event, calendarId);
 Logger.log('Event ID: ' + event.getId());

1 个答案:

答案 0 :(得分:2)

您可以在App-B对象上使用.toISOString()来获取ISO字符串,但Google日历请求的格式与此略有不同,但这是一个快速修复。从正常转换开始:

Date

如果您需要从单独的对象中创建(new Date()).toISOString(); // "2016-07-29T00:00:00.000Z" var startTime = new Date(); var isoStartTime = startTime.toISOString(); ,您可以:

Date

然后将其更改为Google正在寻找的内容:

var yourDate = '2016-07-29';
var yourTime = '11:55 AM';

var startTime = new Date(yourDate);
startTime.setHours(yourTime.split(':')[0]); // 11
startTime.setMinutes(yourTime.split(':')[1].substr(0,2)); // 55

startTime = startTime.toISOString(); // "2016-07-29T11:55:00.000Z"

或者

// To RFC 3339...
startTime.substr(0,startTime.length-5)+'Z'; // "2016-07-29T11:55:00Z"

您也可以(并且可能更喜欢)使用数字代替字符串;如果你单独传递//if the "startTime = startTime.toISOString()" assignment happened startTime.split('.')[0]+'Z'; //if startTime is a Date object, not a string startTime.toISOString().split('.')[0]+'Z'; hours,它看起来比字符串操作更清晰:

minutes