据我对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
这类工作(并从选项变量中删除模式)。我还没有测试其他浏览器。