Intl.DateTimeFormat.prototype.format() - JavaScript 编辑
The Intl.DateTimeFormat.prototype.format()
method formats a date according to the locale and formatting options of this Intl.DateTimeFormat
object.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.Syntax
dateTimeFormat.format(date)
Parameters
date
- The date to format.
Description
The format
getter formats a date into a string according to the locale and formatting options of this Intl.DateTimeFormat
object.
Examples
Using format
Use the format
getter function for formatting a single date, here for Serbia:
var options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
var dateTimeFormat = new Intl.DateTimeFormat('sr-RS', options);
console.log(dateTimeFormat.format(new Date()));
// → "недеља, 7. април 2013."
Using format with map
Use the format
getter function for formatting all dates in an array. Note that the function is bound to the Intl.DateTimeFormat
from which it was obtained, so it can be passed directly to Array.prototype.map()
.
var a = [new Date(2012, 08), new Date(2012, 11), new Date(2012, 03)];
var options = { year: 'numeric', month: 'long' };
var dateTimeFormat = new Intl.DateTimeFormat('pt-BR', options);
var formatted = a.map(dateTimeFormat.format);
console.log(formatted.join('; '));
// → "setembro de 2012; dezembro de 2012; abril de 2012"
Avoid comparing formatted date values to static values
Most of the time, the formatting returned by format()
is consistent. However, this might change in the future and isn't guaranteed for all the languages — output variations are by design and allowed by the specification. Most notably, the IE and Edge browsers insert bidirectional control characters around dates, so the output text will flow properly when concatenated with other text.
For this reason you cannot expect to be able to compare the results of format()
to a static value:
let d = new Date("2019-01-01T00:00:00.000000Z");
let formattedDate = Intl.DateTimeFormat(undefined, {
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
second: 'numeric'
}).format(d);
"1.1.2019, 01:00:00" === formattedDate;
// true in Firefox and others
// false in IE and Edge
Note: See also this StackOverflow thread for more details and examples.
Specifications
Specification |
---|
ECMAScript Internationalization API (ECMA-402) The definition of 'Intl.DateTimeFormat.format' in that specification. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论