javascript - 添加时区后为 "getDate is not a function"

标签 javascript jquery date timezone

我正在显示实时日期和时间,但出现错误 getDate is not a function

我收到这个错误是因为我这样添加了时区

var x = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});

你能帮我解决这个问题吗?

function calculateUSATime() {
  var refresh = 1000; // Refresh rate in milli seconds
  mytime = setTimeout('currentUSATime()', refresh)
}


function currentUSATime() {
  var x = new Date().toLocaleString("en-US", {
    timeZone: "America/New_York"
  });
  var date = x.getDate();
  var month = x.getMonth(); //Be careful! January is 0 not 1
  var year = x.getFullYear();
  document.getElementById('ct').innerHTML = date;
  calculateUSATime();
}
<body onload=currentUSATime();>
  <span id='ct'></span>

</body>

最佳答案

toLocaleString 将返回一个 String。您可以再次将其传递给日期构造函数以获取 Date 的实例。根据MDN

The toLocaleString() method returns a string with a language sensitive representation of this date

var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];


function calculateUSATime() {
  var refresh = 1000; // Refresh rate in milli seconds
  mytime = setTimeout('currentUSATime()', refresh)
}


function currentUSATime() {
  let str = new Date().toLocaleString("en-US", {
    timeZone: "America/New_York"
  })
  var x = new Date(str);
  var date = x.getDate();
  var month = x.getMonth(); //Be careful! January is 0 not 1
  var year = x.getFullYear();
  document.getElementById('ct').innerHTML = days[x.getDay()]+ ' ' + x.toLocaleString();
  calculateUSATime();
}
<body onload=currentUSATime();>
  <span id='ct'></span>

</body>

您可以改进的另一件事是删除 calculateUSATime 并在 currentUSATime 中使用 setTimeout

function currentUSATime() {
  let str = new Date().toLocaleString("en-US", {
    timeZone: "America/New_York"
  })
  var x = new Date(str);
  var date = x.getDate();
  var month = x.getMonth(); //Be careful! January is 0 not 1
  var year = x.getFullYear();
  document.getElementById('ct').innerHTML = x;
  
  var refresh = 1000; // Refresh rate in milli seconds
  mytime = setTimeout(currentUSATime, refresh)
  
}
<body onload="currentUSATime();">
  <span id='ct'></span>

</body>

关于javascript - 添加时区后为 "getDate is not a function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55632141/

相关文章:

javascript - 在 ng-repeat 中通过 angularjs 增加索引值

jquery - Google PageSpeed Insights 结果 jQuery 减慢加载速度

javascript - 如何使用javascript onClick链接更改背景图像

javascript - 如何在 javascript (jQuery) 中分配迭代数组的事件回调

php - 以不同的日期格式执行 SQL 查询

JavaScript RegEx 用于替换字符串中以 # 开头的单词

javascript - 将简单代码从 JS 转换为 jQuery

android - 如何在android中的日期中添加天数

javascript - Portlet 中的 Jquery 数据表

python - 切片、合并会计年度日期并将其映射到日历年日期到新列