【问题标题】:Display a phone number based on the timezone [closed]根据时区显示电话号码[关闭]
【发布时间】:2014-08-25 20:58:34
【问题描述】:

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

【问题讨论】:

  • 你得到什么输出,你期望什么输出?另外,这个问题真的涉及Java吗?
  • 电话号码与时区有何关系?

标签: javascript time localization timezone


【解决方案1】:

你的 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>

【讨论】:

  • See It Run on Meta,由新的 Snippet Runner 提供。希望很快出现在主网站上!
【解决方案2】:

一般来说,仅通过偏移量进行时区检测是不可靠的。这是因为许多时区共享相同的偏移量,而使用夏令时的时区将在一年中的不同时间使用不同的偏移量。你可以在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;

【讨论】:

  • 现在当我去使用 HTML 页面中的值时,我如何显示它?

    java 脚本运行良好,但我不确定如何显示 phone 变量
  • 您不应将脚本 src 放在 H3 标记中。您已经拥有的代码应该可以工作。您只是从未将值分配给 div 标签。
猜你喜欢
  • 2011-06-20
  • 1970-01-01
  • 2020-01-04
  • 1970-01-01
  • 1970-01-01
  • 2020-10-16
  • 2010-10-03
  • 2012-09-30
  • 2011-09-03
相关资源
最近更新 更多