2016-07-29 2 views
1

나는 3 개의 변수가있다 : (1) Date (2) StartTime (3) EndTime 나는 두 개의 변수 (1) Date와 StartTime (2) Date와 EndTime을 가져 와서 Google 캘린더를 만들 수있다. 행사.문자열을 ISOString으로 변환하는 방법?

Google 캘린더 일정을 만들려면 이벤트 타이밍에 ISO 문자열 형식을 전달해야합니다. 누구든지 아래 코드를 확인하고 누락 된 부분을 도울 수 있습니까?

function createEvent(title,Dt,startTime,endTime,col) { 
var calendarId = '[email protected]'; 
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()); 
+0

은 세 단계에 따라 ISO를 얻을 수 있습니다, 1) 오전 11시 55분 = 11로 24 시간/오후 오전 시간을 변환 : 55 및 11:55 PM = 23:55, 2) 그런 다음 날짜와 시간을 2016-07-21 11:55와 같은 공백으로 연결 한 다음 3) 문자열에서 날짜를 가져옵니다. var date = new Date ("2016-07 -21 11:55 "); ISO 날짜는 – Vickyexpert

답변

2

당신은 ISO 문자열을 얻기 위해 Date 객체에 .toISOString()를 사용할 수 있지만, 구글 캘린더는이보다 약간 다른 형식을 요청하지만, 빠른 수정입니다. 일반 변환을 시작합니다

(new Date()).toISOString(); // "2016-07-29T00:00:00.000Z" 

var startTime = new Date(); 
var isoStartTime = startTime.toISOString(); 

을 당신이 할 수 있습니다 별도의 객체에서 Date해야 할 경우 :

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

또는 : 찾고

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" 

그리고 무엇을 구글로 변경을

//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 경우 별도로 그 문자열 작업에 비해 청소기 볼 수 있습니다 :

var startTime = new Date(yourDate); 
startTime.setHours(yourHours); // string or int 
startTime.setMinutes(yourMinutes); // string or int 
+0

입니다. 작동하지 않았습니다. function Test1() { var yourDate = '2016-07-29'; Logger.log (yourDate); var yourTime = '11 : 55 AM '; Logger.log (yourTime); var startTime = 새 날짜 (yourDate); Logger.log (startTime); startTime.setHours (yourTime.split (':') [0]); // 11 Logger.log (startTime); startTime.setMinutes (yourTime.split (':') [1] .substr (0,2)); // 55 Logger.log (startTime); startTime.toISOString(); Logger.log (startTime); } ** 오류 : ** RangeError : 날짜가 잘못되었습니다. (줄 18, 파일 "Test1") ** 로그 출력 : ** Wed Dec 31 16:00 GMT-08 : 00 1969 – user2518

+0

RFC3339가 문자 수가 적은 것처럼 보입니다. https : //tools.ietf .org/html/rfc3339 위의 내용은 '... 000Z'이지만 해당 문서 (https://developers.google.com/google-apps/calendar/v3/reference/events)는 '... 00Z'을 보여주는 RFC3339 –