我经常旅行,而且我经常有约会(例如航班)从一个时区开始到另一个时区结束。我需要知道每个事件开始和结束的本地时间和UTC时间。
我使用Google日历并在日历活动中指定不同的开始和结束时区。
我编写了一个脚本,可以在一段时间内完成我的议程,在我当地时间显示所有内容,这很好。
我很难获得当地时间。
当我检索事件时,时间显示在我当地时间。
我可以使用欧洲/罗马等格式检索时区,但这无助于我显示当地时间。
附件是我日历中条目的屏幕截图:
以下是从我的脚本中看到事件的方式(取自日志文件):
Start: 2017-03-29T16:35:00+01:00, startTimeZone: Europe/Berlin.
End: 2017-03-29T22:30:00+01:00, endTimeZone: Asia/Qatar
这些时间应分别为开始时间:17:35和结束时间:00:30。
有没有人对如何获得当地时间或在时区之间转换有任何想法?
答案 0 :(得分:1)
希望这对你有帮助。
function timezones()
{
var today = new Date();
var hour = 3600000;
var tz = '';
today = new Date(today.getTime() + (13 * hour));
var s = '<div id="mydiv">';
for(var i = 12; i >= -11; i--)
{
if(i > 0){ tz = 'GMT+' + i;}
if(i == 0){tz = 'GMT';}
if(i < 0){tz = 'GMT' + i;}
today = new Date(today.getTime() - hour);
s += '<div class="myDates">' + Utilities.formatDate(today,"GMT", "'Date:'yyyy-MM-dd' Time:'HH:mm:ss") + 'TimeZone; "' + tz + '"</div>';
}
s += '</div>';
dispStatus('Timezones', s);
}
这是我使用的显示例程。
function dispStatus(title,html,width,height,modal)
{
var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
var width = typeof(width) !== 'undefined' ? width : 400;
var height = typeof(height) !== 'undefined' ? height : 300;
var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
var modal = typeof(modal) !== 'undefined' ? modal : false;
var htmlOutput = HtmlService
.createHtmlOutput(html)
.setWidth(width)
.setHeight(height);
if(!modal)
{
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
}
else
{
SpreadsheetApp.getUi().showModalDialog(htmlOutput, title);
}
}
here是时区地图。
答案 1 :(得分:0)
<h1>Calendar Play</h1>
function calendarTesting()
{
var rngA = CalendarApp.getAllOwnedCalendars();
var s='';
for(var i = 0;i < rngA.length; i++)
{
s += '<div id="Cal' + i + '"><Strong>Name: </strong>' + rngA[i].getName();
s += '<br /><strong>Color: </strong><span style="color:'+ 'black' +';">' + rngA[i].getColor() + '</span>';
s += '<br /><strong>Description: </strong>' + rngA[i].getDescription();
var pri = (rngA[i].isMyPrimaryCalendar())? 'Yes': 'No';
s += '<br /><strong>IsMyPrimaryCalender: </strong>' + pri + '</div>';
s += '<style>#Cal'+ i +'{background-color:'+ rngA[i].getColor() +';padding:10px;}</style>';
}
var now = new Date();
var ForWeeksFromNow = new Date(now.getTime() + (28 * 24 * 60 * 60 * 1000));
var events = CalendarApp.getDefaultCalendar().getEvents(now,ForWeeksFromNow);
for(var j = 0; j < events.length; j++)
{
s+= '<div style="border:1px solid black;padding:10px 50px 10px 10px;">';
s += '<div style="float:right;font-size:48px;">' + Utilities.formatDate(events[j].getStartTime(),"GMT-7", "E") + '</div>';
s += '<br /><strong>Title: </strong>' + events[j].getTitle();
s += '<br /><strong>Start: </strong>' + Utilities.formatDate(events[j].getStartTime(),"GMT-7", "MMM dd HH:mm");
s += '<br /><strong>End: </strong>' + Utilities.formatDate(events[j].getEndTime(), "GMT-7", "MMM dd HH:mm");
s += '<div style="float:right;font-size:12px;">' + events[j].getDescription() + '</div>';
s += '</div>';
}
s += '<br /><br /><input type="button" value="Exit" onClick="google.script.host.close();" />';
var title = 'Calendar for: ' + Utilities.formatDate(now, "GMT-7", "E MMM dd, yyyy");
dispStatus(title, '<p>' + s + '</p>',600,500);
}
function dispStatus(title,html,width,height)
{
// Display a modeless dialog box with custom HtmlService content.
var title = typeof(title) !== 'undefined' ? title : 'No Title Provided';
var width = typeof(width) !== 'undefined' ? width : 250;
var height = typeof(height) !== 'undefined' ? height : 300;
var html = typeof(html) !== 'undefined' ? html : '<p>No html provided.</p>';
var htmlOutput = HtmlService
.createHtmlOutput(html)
.setWidth(width)
.setHeight(height);
SpreadsheetApp.getUi().showModelessDialog(htmlOutput, title);
}