我目前正在学习有关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
。时间是我所期望的。
答案 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