我正在尝试使用JavaScript根据用户PC所在的时区显示电话号码,但我遇到了麻烦。以下是我的代码:
<html>
<head>
<title>Offset Time</title>
</head>
<body onload ="timezone()">
<script type="text/javascript">
var date = new Date();
var offset = date.getTimezoneOffset();
function timezone(){
var Phone;
var div=document.getElementById('date_dependent');
if (offset = 240) {
Phone = "1-877-219-8830";
} else if (offset = 300) {
Phone = "1-866-878-7814";
} else {
Phone = "1-877-868-8121";
}
}
</script>
<div id="date_dependent"></div>
</body>
</html>
答案 0 :(得分:2)
if语句中有错误。
if (offset = 240) {
应该是
if (offset == 240) {
和
else if (offset = 300)
你的功能定义应该是
var timezone = function(){
这里:
<html>
<head>
<title>Offset Time</title>
</head>
<body onload ="timezone()">
<script type="text/javascript">
var date = new Date();
var offset = date.getTimezoneOffset();
var timezone = function(){
var Phone;
var div=document.getElementById('date_dependent');
if (offset == 240) {
Phone = "1-877-219-8830";
} else if (offset == 300) {
Phone = "1-866-878-7814";
} else {
Phone = "1-877-868-8121";
}
}
</script>
<div id="date_dependent"></div>
答案 1 :(得分:0)
通常,仅通过偏移检测时区是不可靠的。这是因为许多时区共享相同的偏移量,使用夏令时的时区将在一年中的不同时间使用不同的偏移量。您可以在the timezone tag wiki中阅读更多内容。
但是,您的特定用例有一个解决方案。假设您在美国本土,并且您不关心来自其他国家/地区的客户,那么您可以测试特定时间点而不是当前时间。 1月1日是检索标准时间偏移的良好测试值,因为它不接近任何夏令时转换。
var date = new Date(2014,0,1); // use Jan 1st, not the current date.
var offset = date.getTimezoneOffset();
var phone;
switch (offset) {
case 300:
phone = "The Eastern time zone phone number";
break;
case 240:
phone = "The Central time zone phone number";
break;
default:
phone = "The default phone number";
}
请注意,如果您想区分亚利桑那州和其他国家/地区,因为它不使用夏令时,您需要测试冬季偏移(1月1日)和夏季抵消(7月1日)。我把这段代码留了下来,因为它不是你原来问题的一部分。
另外,不要忘记实际使用该值!
div.innerHTML = phone;