阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS Intl.DateTimeFormat format()

      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.

      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

      SpecificationStatusComment
      [ECMAScript Internationalization API 1.0 (ECMA-402)
      The definition of ‘Intl.DateTimeFormat.format’ in that specification.](https://www.ecma-international.org/ecma-402/1.0/#sec-12.3.2)StandardInitial definition.
      [ECMAScript Internationalization API 2.0 (ECMA-402)
      The definition of ‘Intl.DateTimeFormat.format’ in that specification.](https://www.ecma-international.org/ecma-402/2.0/#sec-12.3.2)Standard 
      [ECMAScript Internationalization API 4.0 (ECMA-402)
      The definition of ‘Intl.DateTimeFormat.format’ in that specification.](https://tc39.es/ecma402/#sec-Intl.DateTimeFormat.prototype.format)Draft 

      See also

      目录
      目录