根据时区显示电话号码

时间:2014-08-25 20:58:35

标签: javascript time localization timezone

我正在尝试使用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>

2 个答案:

答案 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;