[英]How to get a User's Calendar Default IANA Time Zone from Google Calendar API?
[英]How to get date and time from user in google calendar API?
我正在使用谷歌 API 在谷歌日歷中創建一些事件。 我需要從用戶輸入中獲取日期和時間。 這可能是我的邏輯問題,但我無法弄清楚。 這是我的代碼:
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);
}
});
}
當我在我的帖子部分打印 dateTime 時,它是用戶輸入的正確日期,但它在事件變量中無法識別它。 我收到此錯誤消息:
錯誤:開始時間和結束時間必須都為日期或都為日期時間。
我還有另一個問題,如何添加一個小時來開始時間並將其用作結束時間?
更新:
RFC3339 格式的字符串需要格式為hh:mm:ss
的時間。
示例如何將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";
我不太明白您想如何處理用戶時區,但這里有兩個示例顯示了可能的情況:
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.