简体   繁体   English

如何将字符串转换为ISOString?

[英]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: 如果您分别传递hoursminutes则看起来比该字符串操作还干净:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM