我已经在这个问题上工作了一段时间了,找不到一个好的解决方案。我在HTML/CSS/JS Web服务器上工作,我需要根据当前用户的本地时间设置显示日期和时间。例如,如果我在PC上运行网站,并将时间小时格式设置为24小时格式,我希望Web服务器也使用24小时格式,反之亦然。
这个问题不是关于手动选择是否显示12小时或24小时的时间格式,但我想知道浏览器是否可以检测自己选择什么时间格式。
现在,我设置了24小时格式:
我使用以下JavaScript代码:
var newDate = new Date(2023, 8, 20, 14, 40);
console.log("newDate = ", newDate);
var formattedDate = newDate.toLocaleString();
console.log("formattedDate = ", formattedDate);
document.getElementById("date-time-placeholder").innerHTML = formattedDate;
date-time-placehold是文本的简单占位符:
<table>
<tr>
<td style="width: 280px !important" id="date-time-placeholder" class="item">
</td>
</tr>
</table>
结果:
控制台打印:
newDate = Wed Sep 20 2023 14:40:00 GMT+0300 (Eastern European Summer Time)
formattedDate = 9/20/2023, 2:40:00 PM
这样的事情甚至可能吗?为什么函数toLocaleString会将我的24小时格式转换为12小时格式?我该如何避免这种情况?
1条答案
按热度按时间5ktev3wc1#
您看到的行为是由toLocaleString()函数应用的默认格式设置引起的。toLocaleString()函数用于根据用户的区域设置设置日期和时间的格式,其中包括日期和时间格式设置首选项,例如使用12小时或24小时时间格式。
如果要以特定格式显示日期和时间,无论用户的区域设置如何,都可以使用JavaScript手动设置日期和时间的格式。以下是如何以24小时格式设置日期和时间格式的示例:
var newDate = new Date(2023,8,20,14,40);
var hours = newDate.getHours(); var minutes = newDate.getMinutes(); var formattedDate = newDate.toLocaleDateString()+ ' ' +(hours < 10?'0':'')+小时+ ':' +(分钟< 10?'0':'')+分钟;
document.getElementById(“日期时间占位符”).innerHTML = formattedDate;
在这段代码中,我们首先从newDate对象中提取小时和分钟,然后将它们格式化为24小时格式的字符串。toLocaleDateString()函数用于格式化日期时间的日期部分。
这样,您可以更好地控制格式设置,并且可以确保日期和时间以所需的24小时格式显示,而不管用户的区域设置如何。