Intl.DateTimeFormat('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit'
}).format(807959700000)
我期望上面的调用返回类似
Wednesday, August 09, 1995, 04:15:00 AM
的内容,但似乎缺少前导零。我得到Wednesday, August 09, 1995, 4:15:00 AM
2-digit
不能解决问题,尽管它似乎可以在每月的某天使用。 2-digit
是不是意料之外的意思,还是我做错了什么?P.S.我在Chrome控制台中对此进行了测试。
最佳答案
如果将hour12
属性设置为 false ,这将起作用。 IE。
Intl.DateTimeFormat('en-US', {
weekday: 'long',
year: 'numeric',
month: 'long',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: false // setting 24 hour format
}).format(807959700000);
它适用于凌晨2点和下午2点(14小时)。但我知道同样适用于12小时制,但事实并非如此。我在chrome浏览器和firefox浏览器中都进行了检查。
当我检查规范时,它已经定义了一个algorithm,可用于实现
Intl.DateTimeFormat
功能。我看到在将hour12属性设置为true时处理了许多特殊情况,最后一步是因此,我认为
Intl.DateTimeFormat
最初与date对象配合使用,随后在步骤(8)中应用此步骤放置am/pm信息。在此步骤中,可能不考虑
2-digits
中指定的Intl.DateTimeFormat
信息,但必须为。我认为这是有效的bug,并且已经提高了https://code.google.com/p/chromium/issues/detail?id=527926。PS:我并不是说问题在于规范,如ECMAScript语言规范中所述,