【问题标题】:In Date.toLocaleString(), locale "ja-JP" can't show hour in 2-digit format?在 Date.toLocaleString() 中,区域设置“ja-JP”不能以 2 位格式显示小时?
【发布时间】:2019-05-22 02:24:57
【问题描述】:

使用区域设置“en-US”时不会发生此行为。

此外,无论小时设置为“2 位”还是“数字”,
“ja-JP”和“en-US”语言环境的输出保持不变。

这是一个错误吗?是否有解决方法以这种格式以 2 位数字显示小时?

yyyy/MM/dd HH:mm:ss

function showDate() {
    var date = new Date('2019-05-22T00:37:36.37Z');

    var options = { year: 'numeric', day: '2-digit', month: '2-digit', 
                    hour: '2-digit', minute: '2-digit', second: '2-digit',
                    hour12: false };

    document.querySelector("#ja-jp").innerHTML = date.toLocaleString('ja-JP', options);
    document.querySelector("#en-us").innerHTML = date.toLocaleString('en-US', options);
}
window.onload = showDate;
<div id="ja-jp"></div>
<div id="en-us"></div>

【问题讨论】:

  • 如果是一个错误,Chrome、Firefox、Safari(IE?未测试)都得到相同的结果会很奇怪。但是,reading the specs,当Intl.NumberFormat('ja-JP', {minimumIntegerDigits: 2, useGrouping: false}).format(9) 返回"09" 时,我似乎无法找到他们如何实现此结果...
  • 当区域设置为ja-JP 时,hour 选项的实际值似乎无关紧要。它是永久数字。我不知道为什么。

标签: javascript datetime


【解决方案1】:

不确定这是否对您有帮助,但请查看http://phrogz.net/JS/FormatDateTime_JS.txt

在 JS 中格式化日期的一种非常好的方式。

【讨论】:

  • 感谢您的参考。我会注意到这一点,但我仍然希望我只是在我的实现中遗漏了一些东西。
【解决方案2】:

我不太喜欢这种解决方法,所以我不会接受这个作为答案。
但既然它有效,我就把它放在这里。

function formatDate(date) {
    var year = date.getFullYear();
    var month = ("0" + (date.getMonth() + 1)).slice(-2);
    var day = ("0" + date.getDate()).slice(-2);

    var hour = ("0" + date.getHours()).slice(-2);
    var minute = ("0" + date.getMinutes()).slice(-2);
    var second = ("0" + date.getSeconds()).slice(-2);

    return year + "/" + month + "/" + day + " " + hour + ":" + minute + ":" + second;
}

参考link

【讨论】:

    猜你喜欢
    • 2020-06-05
    • 2019-03-23
    • 2019-04-20
    • 2011-03-15
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    相关资源
    最近更新 更多