我无法理解JavaScript中对象toString()和toLocaleString()方法之间的区别Date.我知道的一件事是,toString()只要Date需要将对象转换为字符串,就会自动调用它.
以下代码始终返回相同的结果:
?var d = new Date();
document.write( d + "<br />" );
document.write( d.toString() + "<br />" );
document.write( d.toLocaleString() );
Run Code Online (Sandbox Code Playgroud)
输出是:
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Tue Aug 14 2012 08:08:54 GMT+0500 (PKT)
Run Code Online (Sandbox Code Playgroud)
phe*_*nal 15
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString
基本上,它将日期格式化为在调用函数的计算机上格式化的方式,例如美国的前一天,世界其他大部分地区的前一天.
编辑:
因为其他一些人指出上面的参考文献没有必要可靠,所以ECMAScript的规范如何:
15.9.5.2 Date.prototype.toString ( )此函数返回String值.String的内容是implementation - >> dependent,但是用于以方便的,人类可读的形式表示当前时区中的Date.
15.9.5.5 Date.prototype.toLocaleString ( )此函数返回String值.String的内容是implementation - >> dependent,但是用于以方便的,人类可读的形式表示当前时区中的Date,该形式对应于主机环境的当前语言环境的约定.
由于您可以希望假设大多数实现都会反映规范,因此差异toString()只是要求可读,toLocaleString()应该以可以根据用户的区域设置匹配用户期望的格式进行读取.
使用操作系统的语言环境约定将日期转换为字符串.
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString
转换操作系统未正确格式化的年份时,toLocaleString的行为与toString类似.