[英]How to convert string to ISOString?
I have 3 variables: (1)Date (2) StartTime (3) EndTime I would like to bring them as two variables (1)Date and StartTime (2) Date and EndTime, so that I can create a google calendar event. 我有3个变量:(1)Date(2)StartTime(3)EndTime我想将它们作为两个变量(1)Date和StartTime(2)Date和EndTime来使用,以便创建Google日历事件。
As per my understanding, in order to create a google calendar event I need to pass ISO String format for event timings. 据我了解,为了创建Google日历事件,我需要传递ISO String格式的事件计时信息。 Can anyone check the below code and help me with the missing piece.
任何人都可以检查以下代码,并帮助我解决丢失的部分。
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());
You can use .toISOString()
on the Date
object to get an ISO String, but Google Calendar is requesting a slightly different format than this, but it is a quick fix. 您可以在
Date
对象上使用.toISOString()
来获取ISO字符串,但是Google日历要求的格式与此稍有不同,但这是一种快速解决方案。 Start with a normal conversion: 从正常转换开始:
(new Date()).toISOString(); // "2016-07-29T00:00:00.000Z"
var startTime = new Date();
var isoStartTime = startTime.toISOString();
If you need to make the Date
from separate objects you can: 如果需要使用单独的对象作为
Date
,则可以:
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"
Then change it to what Google's looking for: 然后将其更改为Google寻找的内容:
// To RFC 3339...
startTime.substr(0,startTime.length-5)+'Z'; // "2016-07-29T11:55:00Z"
Or 要么
//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';
You can also (and probably preferrably) use numbers instead of strings for all that; 您还可以(并且可能更可取的是)使用数字代替字符串; if you pass
hours
and minutes
separately it could look cleaner than that string operation: 如果您分别传递
hours
和minutes
则看起来比该字符串操作还干净:
var startTime = new Date(yourDate);
startTime.setHours(yourHours); // string or int
startTime.setMinutes(yourMinutes); // string or int
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.