我试图获取用户的本地时间并用我自己的时间减去它以获得时差作为输出。
这是我到目前为止所拥有的:
var myTimezone = new Date();
var usersTimezone = 0; // UsersTimezone is missing
var timeDifference = myTimezone.getHours() - usersTimezone + " hours";
document.getElementById("time").innerHTML = "Time Difference: " + timeDifference;
<div id="time">
</div>
我找不到一个好的解决方案来获取用户的准确本地时间,所以也许有人可以在这里帮助我。
非常感谢!
最佳答案
简单的方法:没有夏令时
如所解释的 here有一个函数 getTimezoneOffset()
来获取用户的时区。
但是你必须知道你所在的时区,在我的例子中你所在的时区是 UTC+0。
var myTimezone = 1;
var usersTimezone = (new Date()).getTimezoneOffset() / 60;
var timeDifference = Math.abs(myTimezone + usersTimezone) + " hours";
document.getElementById("time").innerHTML = "Time Difference: " + timeDifference;
<div id="time">
</div>
夏令时计算
下面的代码也查看了他 daylight saving time 。 这更复杂,我使用了 momentjs为此。
另请看一下这篇文章: https://stackoverflow.com/a/29268535/2801860
var now = moment();
var usersOffset = now.utcOffset();
now.tz("Europe/Berlin"); // your time zone, not necessarily the server's
var myOffset = now.utcOffset();
var diffInMinutes = Math.abs(usersOffset - myOffset);
document.getElementById("time").innerHTML = "Time Difference: " + (diffInMinutes/60);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.21.0/moment-with-locales.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.14/moment-timezone-with-data.min.js"></script>
<div id="time">
</div>
关于javascript - 获取用户时间并减去本地时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351348/