Warning: Date.prototype.toLocaleFormat is deprecated - JavaScript 编辑
错误提示
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"
相关内容
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论