如何将JavaScript日期格式化为英国格式?

时间:2019-01-18 13:00:55

标签: javascript date time formatting

我目前正在学习有关JavaScript的方法,并且对我拥有的函数有疑问,该函数将生成实时日期和时间供我的应用程序使用。

我想将我的JavaScript日期格式化为特定的英国格式,因为它目前是美国格式。

我的代码当前如下所示

<a> 
        <script type="text/javascript">
            document.write ('<p><span id="date">', new Date().toLocaleString(), '<\/span>.<\/p>')
            if (document.getElementById) onload = function () {
                 setInterval ("document.getElementById ('date').firstChild.data = new Date().toLocaleString()", 50)
                                }
        </script>
    </a>

以上显示如下:

1/18/2019, 12:58:13 PM

预期
英国格式为DD / MM / YYYY,因此我希望日期为18/1/2019。时间是我所期望的。

2 个答案:

答案 0 :(得分:1)

您需要特别add the locale 'en-GB' to toLocaleString

<a>
  <script type="text/javascript">
    document.write('<p><span id="date">', new Date().toLocaleString('en-GB'), '<\/span>.<\/p>')
    if (document.getElementById) onload = function() {
      setInterval("document.getElementById ('date').firstChild.data = new Date().toLocaleString('en-GB')", 1000)
    }
  </script>
</a>

关于您的代码,只需少量重构即可。

1)开发人员很少再使用document.write

2)将字符串传递到setInterval被认为是反模式,因为可以使用for XSS attacks

3)您不需要每隔50秒更新一次代码。一秒钟就可以了。

这里有一个重构,易于理解。

// Add the HTML to the document body element
document.body.innerHTML = '<p><span id="date"></span><p>';

// Grab the date element
const date = document.querySelector('#date');

// Create a timer that calls the `changeDate` function once a second
const timer = setInterval(changeDate, 1000);

function changeDate() {

  // Set the textContent of `date` to the new date
  date.textContent = new Date().toLocaleString('en-GB');
}

答案 1 :(得分:-1)

尝试

let d= new Date().toLocaleString('en-GB')
let dNoZeros = d.replace(/^0?(\d?\d).0?(\d?\d)/, "$1/$2");

console.log(d);          // 18/01/2019, 14:20:58
console.log(dNoZeros);   // 18/1/2019, 14:20:58