Google日历的嵌入代码会插入" ctz" URL中的变量用于设置相应的显示时区,但我在全球网站上与超过500名用户合作并尝试让每个人都清楚安排(非付费语言学习者,否则我只是聘请专家)。
有没有人建议如何根据用户的IP地址设置用户的时区?我整天都已经非常广泛地扫描了这些问题。
答案 0 :(得分:2)
使用JSTZ库,例如通过cdnjs包含一个类似的脚本标签
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js"></script>
然后在结束标记之前放置一个脚本标记:
因此,如果您的日历嵌入iframe标记如下:
<iframe src="https://www.google.com/calendar/embed?showPrint=0&showCalendars=0&mode=WEEK&height=600&wkst=1&bgcolor=%23FFFFFF&src=somecalendaridentifier%40group.calendar.google.com&color=%23AB8B00&ctz=America%2FLos_Angeles" style=" border-width:0 " width="800" height="600" frameborder="0" scrolling="no"></iframe>
您的脚本如下所示:
<script type="text/javascript">
var timezone = jstz.determine();
var pref = '<iframe src="https://www.google.com/calendar/embed?showPrint=0&showCalendars=0&mode=WEEK&height=600&wkst=1&bgcolor=%23FFFFFF&src=somecalendaridentifier%40group.calendar.google.com&color=%23AB8B00&ctz=';
var suff = '" style=" border-width:0 " width="800" height="600" frameborder="0" scrolling="no"></iframe>';
var iframe_html = pref + timezone.name() + suff;
document.getElementById('calendar-container').innerHTML = iframe_html;
</script>
答案 1 :(得分:1)
您的解决方案效果很好。我的最终代码是这样的
HTML(来自Marek Rzewuski's answer):
<div id="calendar-container"></div>
JavaScript(从sheive's answer修改):
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jstimezonedetect/1.0.4/jstz.min.js"></script>
<script type="text/javascript">
var timezone = encodeURIComponent(jstz.determine().name());
var pref = '<iframe src="https://calendar.google.com/calendar/embed?mode=agenda&src=somecalendaridentifier%40group.calendar.google.com&ctz=';
var suff = '" style=" border-width:0 " width="800" height="600" frameborder="0" scrolling="no"></iframe>';
var iframe_html = pref + timezone + suff;
document.getElementById('calendar-container').innerHTML = iframe_html;
</script>
我只是将所有相关答案汇总在此页面上。
答案 2 :(得分:0)
有人建议使用名为JSTZ的JavaScript库,并将其动态添加到Google日历的嵌入代码中。幸运的是,Google日历似乎使用与浏览器相同的标准化IANA时区代码(yay good data!),从而避免了大量的SWITCH语句。
var timezone = jstz.determine(); timezone.name(); “美国/纽约”
但我仍然无法弄清楚如何完成这项工作。有人可以帮助我们超越最后一英里吗?
答案 3 :(得分:0)
工作正常。必须添加:
<div id="calendar-container"></div>
in html