我正在尝试将自定义模式与JavaScript中的toLocaleDateString或Intl.DateTimeFormat结合使用,但似乎会被忽略?

时间:2018-10-17 07:09:44

标签: javascript datetime datetime-format

据我对ECMA(API 2.0)标准的理解,它允许您在toLocaleDateString()toLocaleTimeString()函数的选项中使用模式作为参数。

我认为在这个假设中我可能错了,然后转向尝试将Intl.DateTimeFormat与Date结合使用。这使我能够成功地指定我想要一个24小时制(字符串末尾省略了am / pm)。在这一点上,我发现指定一个模式对该时间的字符串结果没有影响。所以我想现在的问题是:它应该响应指定的模式吗?该文档似乎提到模式是“内部”的。因此,我可能获得dd / mm / YYYY HH:MM预期结果的唯一方法是设置使用该模式的语言环境(例如en-GB)。我真的希望我可以通过格式样式语句来获得更多控制。我希望是这样的:

function getTime(objId)
{
    let obj = document.getElementById(objId);
    let today = new Date();
    let options = {day:"numeric", month:"numeric", year:"numeric",
        hour12:false, hour:"numeric", minute:"numeric",
        pattern:"{day}/{month}/{year} {hour}:{minute}"};
    obj.innerHTML = new Intl.DateTimeFormat([], options).format(today);
}

有没有办法在这些日期上使用自定义模式?还是我必须寻找/创建自己的DateTime库和/或创建自己的原型函数来覆盖它们的原型?

我想要的输出是%d/%m/%Y %H:%M的C样式日期时间格式。数字日,数字月,全年(4位数字),24小时制,分钟。

P.S。 obj.innerHTML = new Intl.DateTimeFormat("en-GB", options).format(today);(在Chrome 69.0.3497.100中)的输出17/10/2018, 03:06这类工作(并从选项变量中删除模式)。我还没有测试其他浏览器。

0 个答案:

没有答案