添加时区后,“ getDate不是函数”

que*_*ank 3 javascript jquery timezone date

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

我收到此错误,因为我添加了这样的时区

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

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

var x = new Date().toLocaleString("en-US", {timeZone: "America/New_York"});
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)

Mah*_*Ali 5

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

toLocaleString()方法返回具有该日期的语言敏感表示形式的字符串

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();
}
Run Code Online (Sandbox Code Playgroud)
<body onload=currentUSATime();>
  <span id='ct'></span>

</body>
Run Code Online (Sandbox Code Playgroud)

您可以改进它的另一件事,即在内部删除calculateUSATime和使用。setTimeoutcurrentUSATime

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)
  
}
Run Code Online (Sandbox Code Playgroud)
<body onload="currentUSATime();">
  <span id='ct'></span>

</body>
Run Code Online (Sandbox Code Playgroud)

  • 只需将其他参数传递给toLocaleString:`let str = new Date()。toLocaleString(“ en-US”,{timeZone:“ America / New_York”,工作日:“ long”,年份:“ numeric”,月份:“ numeric” ,日期:“数字”,小时:“ 2位数”,分钟:“ 2位数”,秒:“ 2位数”});console.log(str);`。这就是您所需要的。无需再次解析和格式化。 (2认同)