我正在使用Intl.DateTimeFormat https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat API来格式化网页部分中的日期和时间,但是我无法获得正确的小时和分钟。
现在在我的国家/地区是时间6:56pm,并且我正在网页中获取此时间:12:56pm

当前页面中的外观如下:

<span id="date">Tuesday, October 24, 2017, 12:56 PM ET</span>

这是我的代码:

var bindEventsToUI = function () {
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth();
    var yyyy = today.getFullYear();
    var hours = today.getHours()
    var minutes = today.getMinutes()
    var $dateEl = $('#date');

    var date = new Date(Date.UTC(yyyy, mm, dd, hours, minutes));
    var options = {
        hour12: true,
        formatMatcher: 'best fit',
        localeMatcher: 'lookup',
        weekday: 'long',
        year: 'numeric',
        month: 'long',
        hour: 'numeric',
        minute: 'numeric',
        day: 'numeric'
    };

    var currentDate = new Intl.DateTimeFormat('en-US', options).format(date);
    $dateEl.text(currentDate + ' ET');
};


我还将这个硬编码的“ ET”放在.text()函数中:
$dateEl.text(currentDate + ' ET');

有没有一种方法可以自动设置?

一切似乎都很好,只是时间不正确,我在做什么错?

最佳答案

我很确定您想这样做:



//<![CDATA[
$.fn.extend({
  dateET:function(dateString){
    var dt = dateString ? new Date(dateString) : Date.now();
    var options = {
      hour12:true,
      formatMatcher:'best fit',
      localeMatcher:'lookup',
      weekday:'long',
      year:'numeric',
      month:'long',
      hour:'numeric',
      minute:'numeric',
      day:'numeric'
    }
    var itd = new Intl.DateTimeFormat('en-US', options);
    var et = itd.format(dt)+' ET';
    return this.each(function(){
      $(this).val(et).append(et);
    });
  }
});
$(function(){
  $('.output').dateET();
});
//]]>

/* external.css */
html,body{
  padding:0; margin:0;
}
body{
  background:#000; overflow-y:scroll;
}
.main{
  width:936px; background:#fff; padding:20px; margin:0 auto;
}
.output[type=text]{
  width:400px;
}

<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
  <head>
    <meta http-equiv='content-type' content='text/html;charset=utf-8' />
    <meta name='viewport' content='width=device-width' />
    <title>dateET</title>
    <link type='text/css' rel='stylesheet' href='external.css' />
    <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js'></script>
    <script type='text/javascript' src='external.js'></script>
  </head>
  <body>
    <div class='main'>
      <div class='output'></div>
      <input class='output' type='text' value='' />
      <div class='output'></div>
    </div>
  </body>
</html>





当然,您应该注意到,只是提供了所需的格式。它仍然给了我西海岸的时间。

关于javascript - 我无法使用Intl.DateTimeFormat API更新小时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46922266/

10-09 18:35