JavaScript根据系统本地时间设置日期

disho6za  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(111)

我已经在这个问题上工作了一段时间了,找不到一个好的解决方案。我在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小时格式?我该如何避免这种情况?

5ktev3wc

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小时格式显示,而不管用户的区域设置如何。

相关问题