我正在尝试在网站上创建两个时钟,上面说了两次。一个来自伦敦,另一个来自纽约。
我已经能够创建一个时钟来读取计算机上的当前时间,但我不确定如何为此设置时区。
我到目前为止的代码是:
<script type="text/javascript" language="javascript">
function renderTime() {
var currentTime = new Date();
var diem = "AM";
var h = currentTime.getHours();
var m = currentTime.getMinutes();
var s = currentTime.getSeconds();
if (h == 0) {
h = 12
} else if (h > 12) {
h = h - 12;
diem = "PM";
}
if (h < 10) {
h = "0" + h;
}
if (m < 10) {
m = "0" + m;
}
if (s < 10) {
s = "0" + s;
}
var myClock = document.getElementById ("clockDisplay");
myClock.textContent = h + ":" + m + ":" + s + " " + diem;
setTimeout ('renderTime()', 1000);
}
renderTime();
</script>
这适用于我创建的CSS样式,因此我可以使用特定字体的时钟。
答案 0 :(得分:2)
currentTime.getTimezoneOffset()
将为您提供格林威治标准时间(GMT)与当地时间之间的时差,以分钟为单位。
您可以使用该值计算所需时区的时间。
答案 1 :(得分:2)
要正确执行 ,您需要一个时区数据库,例如我列出的here之一。
这个问题的所有其他答案都错误地认为“时区”和“时区偏移”是一回事。他们不是。例如,伦敦的时区为Europe/London
,根据一年中的什么时间,可以有+0或+1偏移。纽约的时区为America/New_York
,根据与伦敦完全不同的日期,可以有-5或-4的偏移量。
您可能需要查看moment-timezone:
moment().tz("America/New_York").format()
答案 2 :(得分:1)
查看http://www.datejs.com/它可以很好地处理日期和时区
如果您查看演示文稿,请在文本框中添加1 GMT
vs 1 MST
或1 EST
,这样就会为您提供一个很棒的日期/时区
答案 3 :(得分:1)
您可以使用
在日期中添加或减去小时数currentTime.setHours(currentTime.getHours()+offset);
其中offset是任意小时数。
我用该行和函数更新了jsfiddle,以便它接受偏移量的参数。这不是UTC偏移量,只是从系统时间添加多少小时。您可以通过currentTime.getTimezoneOffset()/60
答案 4 :(得分:0)
谢谢大家的帮助。这一切都让人感到有些困惑,但我在这里找到了一个很好的例子,这就是我最终如何解决这个问题。查看示例4:http://www.ajaxupdates.com/jclock-jquery-clock-plugin/
希望它对其他人有用!
答案 5 :(得分:0)
我在m php网站上使用以下内容:
<script>
function OnTabClickEvent(s, e) {
var tableUrl;
switch (e.tab.Index) {
case 0:
tableUrl = '@Url.Action("CGridViewPartial", "Competences")';
break;
default:
tableUrl = '@Url.Action("TGridViewPartial", "Technologies")';
}
$('#TabContent').empty();
$('#TabContent').load(tableUrl);
}
</script>
<div>
@Html.DevExpress().TabControl(settings =>
{
settings.Name = "CatalogTabControl";
settings.Width = Unit.Percentage(100);
settings.Tabs.Add(tab =>
{
tab.Name = "TabCompetences";
tab.Text = Headers.Competences;
});
settings.Tabs.Add(tab =>
{
tab.Name = "TabProjects";
tab.Text = Headers.ProjectsActivities;
});
settings.Tabs.Add(tab =>
{
tab.Name = "TabTechnologies";
tab.Text = Headers.Technologies;
});
//Events
settings.ClientSideEvents.TabClick = "OnTabClickEvent";
}).GetHtml()
</div>
<div id="TabContent">
@Html.Action("CGridViewPartial", "Competences")
</div>
我使用表格,所以这将填写
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"
<script type="text/javascript">
$(function() {
getStatus();
});
function getStatus() {
<?php
echo " var z = '".strftime("%Z",strtotime("now"))."';\n";
?>
var d = new Date();
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var offset = -8;
if(z == "PDT") offset = -7;
var currentTime = new Date(utc + (3600000*offset));
var currentHours = currentTime.getHours ( );
var currentMinutes = currentTime.getMinutes ( );
currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
var timeOfDay = ( currentHours < 12 ) ? "AM" : "PM";
currentHours = ( currentHours > 12 ) ? currentHours - 12 : currentHours;
currentHours = ( currentHours == 0 ) ? 12 : currentHours;
var currentTimeString = currentHours + ":" + currentMinutes + ": " + timeOfDay + " " + z;
$('td#clock').html(currentTimeString);
setTimeout("getStatus()",5000);
}
</script>
从洛杉矶(PDT或PST)的时间,但我的服务器也在那个时间运行,所以从服务器传递strftime可能不会产生相同的效果。但正如所述,这是我决心在其他区域获得工作时间。