[英]How to get date and time from user in google calendar API?
I am using google API to create some events in google calendar.我正在使用谷歌 API 在谷歌日历中创建一些事件。 I need to get the date and time from the user input.我需要从用户输入中获取日期和时间。 This might be my logic issue but I can't figure it out.这可能是我的逻辑问题,但我无法弄清楚。 Here is my code:这是我的代码:
var dateTime;
app.post('/', function (req, res) {
res.render('index');
var date = req.body.date; //I get date from user
var time = req.body.time; // I get time from user
dateTime = date +'T'+ time+":00"; //trying to create the RFC3339 fromat
console.log("date time: ",dateTime);
createEvents(jwtClient);
});
var event = {
'start': {
'dateTime': dateTime,
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2020-06-12T12:00:00',
'timeZone': 'America/Los_Angeles',
},
'conferenceData': {
'createRequest': {
'conferenceSolutionKey': {
'type': 'hangoutsMeet'
},
'requestId': 'iyfuted65e3ers'
}
},
'attendees': [
{'email': 'test@test.com'},
{'email': 'jhfk@test.com'},
],
'reminders': {
'useDefault': false,
'overrides': [
{'method': 'email', 'minutes': 24 * 60},
{'method': 'popup', 'minutes': 10},
],
},
};
//Create Appointment
function createEvents(auth) {
const calendar = google.calendar({ version: 'v3', auth });
calendar.events.insert({
calendarId: 'primary',
conferenceDataVersion: 1,
resource: event,
}, (err, res) => {
if (err) return console.log('The API returned an error: ' + err);
else {
result = res.data.hangoutLink;
console.log(result," start date: ", event.start.dateTime);
}
});
}
when I print the dateTime in my post section it is the right date that user entered but it does not recognize it in event variable.当我在我的帖子部分打印 dateTime 时,它是用户输入的正确日期,但它在事件变量中无法识别它。 and I get this error message:我收到此错误消息:
Error: Start and end times must either both be date or both be dateTime.错误:开始时间和结束时间必须都为日期或都为日期时间。
I also have another question, how can I add an hour to start time and use it for end time?我还有另一个问题,如何添加一个小时来开始时间并将其用作结束时间?
You can see the text fields that user can enter the date and time here您可以在此处看到用户可以输入日期和时间的文本字段
UPDATE:更新:
The RFC3339 formatted string expects the time in the format hh:mm:ss
. RFC3339 格式的字符串需要格式为hh:mm:ss
的时间。
Sample how to convert time object in the format hh-mm
into an RFC3339 formatted string:示例如何将hh-mm
格式的时间 object 转换为 RFC3339 格式的字符串:
var date = req.body.date; //I get date from user
var time = req.body.time; // I get time from user
time = time.split("-")[0] + ":" + time.split("-")[0];
var dateTime = date +'T'+ time+ ":00";
I did not quite understand how you want to process the user time zone, but here are two samples showing what is possible:我不太明白您想如何处理用户时区,但这里有两个示例显示了可能的情况:
var now = new Date();
Logger.log("Current time:" + now);
var dateTime = new Date(now.getTime()).toISOString().split(".")[0];
Logger.log(dateTime);
var event = {
'start': {
'dateTime': dateTime,
'timeZone': 'America/Los_Angeles',
},
'end': {
'dateTime': '2020-06-12T12:00:00',
'timeZone': 'America/Los_Angeles',
},
...
var now = new Date();
Logger.log("Current time:" + now);
var offset = new Date().getTimezoneOffset();
offset = (offset / (-60));
if (offset < 10) {
offset = '0'+offset;
}
offset = '+' + offset + ':00';
var dateTime = new Date(now.getTime()-new Date().getTimezoneOffset()*60*1000).toISOString().split(".")[0] + offset;
Logger.log(dateTime);
var event = {
'start': {
'dateTime': dateTime
},
'end': {
'dateTime': '2020-06-12T12:00:00-07:00'
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.