此代码段非常适合显示本地时间(每秒更新),即。一个本地时钟。 我想修改它以相同的格式显示UTC / GMT时间。任何意见都将非常受欢迎。
本地时钟Javascript和HTML:
function date_time(id) {
date = new Date;
year = date.getFullYear();
month = date.getMonth();
months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'Jully', 'August', 'September', 'October', 'November', 'December');
d = date.getDate();
day = date.getDay();
days = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday');
h = date.getHours();
if (h < 10) {
h = "0" + h;
}
m = date.getMinutes();
if (m < 10) {
m = "0" + m;
}
s = date.getSeconds();
if (s < 10) {
s = "0" + s;
}
result = '' + days[day] + ' ' + months[month] + ' ' + d + ' ' + year + ' ' + h + ':' + m + ':' + s;
document.getElementById(id).innerHTML = result;
setTimeout('date_time("' + id + '");', '1000');
return true;
}
window.onload = date_time('date_time');
<div id="date_time"></div>
答案 0 :(得分:0)
var
- 否则您将使用长期存在的属性污染父上下文。window.addEventListener('DOMContentLoaded', fn )
而不是盲目地覆盖onload
属性。UTC
上的Date.prototype
功能:
getFullYear()
应为getUTCFullYear()
getMonth()
应为getUTCMonth()
getDate()
应为getUTCDate()
.textContent
代替.innerHTML
来设置元素的文本,因为这可以避免昂贵的重新分析。setTimeout
中的字符串,只需直接传递函数即可。如果需要提供参数,请使用Function.prototype.bind
返回带有预先提供的参数的新Function
对象。timeout
值应为number
字面值,而不是字符串。snake_case
用于非const标识符,而是使用PascalCase
和camelCase
。static
)变量中。以下是我的表现:
var months = [ "January", "February", "March", ... ];
var days = [ "Sunday", "Monday", "Tuesday" ... ];
function updateClock( elementId ) {
var dt = new Date();
var h = dt.getUTCHours().toString();
h = h.length == 1 ? '0' + h : h;
var m = dt.getUTCMinutes().toString();
m = m.length == 1 ? '0' + m : m;
var s = dt.getUTCSeconds().toString();
s = s.length == 1 ? '0' + s : s;
var result = days[ dt.getUTCDaty ] + ' ' + months[ dt.getUTCMonth() ] + ' ' + dt.getUTCFullYear() + ' ' + h + ':' m + ':' + s;
document.getElementById( elementId ).textContent = result;
setTimeout( updateClock.bind( this, elementId ), 100 );
}
window.addEventListener( 'DOMContentLoaded', function(e) { updateClock('date_time'); } )