## 错误提示

    Warning: Date.prototype.toLocaleFormat is deprecated; consider using Intl.DateTimeFormat instead

## 错误类型

警告。JavaScript 引擎不会停止运行。

## 哪里出错了？

`Date.prototype.toLocaleFormat` 是非标准化的方法，已经被废弃，不应该再进行使用。该方法需要传入与 C 语言中的strftime() 方法相似的格式化字符串。该实现将会在 bug 818634 中完全移除。

## 示例

### 废止使用的语法

`Date.prototype.toLocaleFormat` 方法已经废弃，以后会被移除（只在 Firefox 浏览器中有用到，没有在其他浏览器中使用）。

    var today = new Date();
    var date = today.toLocaleFormat('%A, %e. %B %Y');

    console.log(date);
    // In German locale
    // "Freitag, 10. März 2017"

### 备选标准语法之一：使用 ECMAScript Intl API

ECMA-402 (ECMAScript Intl API) 标准规定了支持不同语言的日期和时间格式化形式的对象和方法（在 Chrome 24+, Firefox 29+, IE11+, Safari10+ 中可用）。

现在如果只需要格式化一个日期对象的话，那么可以使用 `Date.prototype.toLocaleDateString` 方法。

    var today = new Date();
    var options = { weekday: 'long', year: 'numeric',
                    month: 'long', day: 'numeric' };
    var date = today.toLocaleDateString('de-DE', options);

    console.log(date);
    // "Freitag, 10. März 2017"

或者，可以使用 `Intl.DateTimeFormat` 对象，该对象允许你将格式化器对象缓存起来，省去很多重复性的计算工作，所以格式化操作会很快。这在需要对一系列的日期对象进行格式化的时候非常有用。

    var options = { weekday: 'long', year: 'numeric',
                    month: 'long', day: 'numeric' };
    var dateFormatter = new Intl.DateTimeFormat('de-DE', options)

    var dates = [Date.UTC(2012, 11, 20, 3, 0, 0),
                 Date.UTC(2014, 04, 12, 8, 0, 0)];

    dates.forEach(date => console.log(dateFormatter.format(date)));

    // "Donnerstag, 20. Dezember 2012"
    // "Montag, 12. Mai 2014"

### 备选标准语法之二：使用 Date 对象的方法

`Date` 对象提供了一系列的方法来生成定制化的格式化字符串。

    (new Date()).toLocaleFormat("%Y%m%d");
    // "20170310"

可以转换为：

    let now = new Date();
    let date = now.getFullYear() * 10000 +
              (now.getMonth() + 1) * 100 + now.getDate();

    console.log(date);
    // "20170310"

## 相关内容

- `Date.prototype.toLocaleFormat`
- `Date.prototype.toLocaleDateString`
- `Intl.DateTimeFormat`