提问人:user1406440 提问时间:9/19/2023 最后编辑:mplungjanuser1406440 更新时间:9/21/2023 访问量:93
如何在我的网站上使用 Javascript 显示当前/实时英国(时间)
How do I show the current/live UK (time) using Javascript on my website
问:
我有一个脚本,用于在网站上实时显示和更新数据/时间。因此,我希望显示英国时间,当时间流逝时也会更新,而不仅仅是静态值。
我希望它始终显示特定时区(英国)的时间 - 这可能吗?
我不需要这个版本中的月份,所以这就是你可以看到的注释。
顺便说一句,即使在原始版本上也是如此。时间“跳跃”到视野中,因为它需要一段时间才能加载 - 有没有办法解决这个问题?
可能值得注意的是,这是一个简单的静态网站,因此没有数据库或其他东西可以玩来获得时间。
干杯!
function showDateTime() {
var currentDate = document.getElementById("date");
var currentTime = document.getElementById("time");
var date = new Date();
var dayList = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
/* var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; */
var dayName = dayList[date.getDay()];
/* var monthName = monthNames[date.getMonth()]; */
/* var today = `${dayName} ${date.getDate()} ${monthName}`; */
var today = `${dayName}`;
var hour = ('0' + date.getHours()).substr(-2);
var min = ('0' + date.getMinutes()).substr(-2);
var sec = ('0' + date.getSeconds()).substr(-2);
var time = hour + ":" + min + ":" + sec;
currentDate.innerText = `${today}`;
currentTime.innerText = `${time}`;
}
setInterval(showDateTime, 1000);
<p><span id="date" class="os-menu__item"></span> <span id="time"></span> GMT</p>
答:
2赞
mplungjan
9/19/2023
#1
英国需要 INTL - 此代码将显示 BST/GMT,具体取决于夏令时
const todaySpan = document.getElementById("date");
const opts = {
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
weekday: 'short',
timeZone: 'Europe/London',
hour12: true, // set to false to get 24 hour format without am/pm
timeZoneName: 'short'
};
const showDateTime = () => todaySpan.textContent = new Date().toLocaleString('en-GB', opts);
showDateTime();
setInterval(showDateTime, 1000);
<p><span id="date" class="os-menu__item"></span></p>
GMT/UTC 可以通过字符串操作来完成,但将采用 24 小时格式
const todaySpan = document.getElementById("date");
const re = /([a-zA-Z]+), (\d+) ([a-zA-Z]+) (\d+) ([\d:]+) (\w+)/;
const showDateTime = () => {
const [_, dayString, date, month, year, time, tz] = new Date().toUTCString().match(re); // toUTCString is GMT
todaySpan.textContent = `${dayString} ${time} ${tz}`.replace(/,/g,""); // remove the comma
};
showDateTime();
setInterval(showDateTime, 1000);
<p><span id="date" class="os-menu__item"></span></p>
评论
2赞
RobG
9/19/2023
或。;-)new Date().toLocaleString('en',{hour:'2-digit',minute:'2-digit',second:'2-digit', weekday:'short', timeZone:'UTC', hour12: false, timeZoneNameL:'short'})
2赞
mplungjan
9/19/2023
@RobG谢谢,错过了。但是 GMT 和效果更好timeZoneName:'shortGeneric'
1赞
mplungjan
9/19/2023
这是可能的。您的实际时区是什么?
1赞
mplungjan
9/21/2023
查看更新.....
1赞
RobG
9/24/2023
@mplungjan——当心国际变幻莫测。对于澳大利亚/布里斯班,Safari 返回“布里斯班时间”,即使按照民用时区命名标准,这也毫无用处(我认为美国至少有 11 个城镇以布里斯班命名,更不用说其他国家了)。它应该是 EST(全球化之前很常见)或 AEST(最近更常见)。其他变体不时被使用......
评论
showDateTime(); setInterval(showDateTime, 1000);
将修复延迟