我无法理解JavaScript中toString()
对象的toLocaleString()
和Date
方法之间的区别。我知道的一件事是,只要toString()
对象需要转换为字符串,就会自动调用Date
。
以下代码始终返回相同的结果:
var d = new Date();
document.write( d + "<br />" );
document.write( d.toString() + "<br />" );
document.write( d.toLocaleString() );
输出是:
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)
答案 0 :(得分:14)
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString
基本上,它将Date格式化为在调用函数的计算机上如何格式化,例如在美国的前一天,在世界其他大部分地区的前一天。
修改强>
因为其他一些人指出上述参考文献不是必要可靠的,所以ECMAScript spec:
是怎么回事?<强>
15.9.5.2 Date.prototype.toString ( )
强>此函数返回String值。字符串的内容是implementation-&gt;&gt;依赖,但旨在以方便,人类可读的形式表示当前时区中的日期。
<强>
15.9.5.5 Date.prototype.toLocaleString ( )
强>此函数返回String值。字符串的内容是implementation-&gt;&gt;依赖,但旨在以方便的,人类可读的形式表示当前时区中的Date,该形式对应于主机环境当前语言环境的约定。
由于您可以假设大多数实现都会反映规范,不同之处在于toString()
只需要可读,toLocaleString()
应该以符合用户期望的格式读取根据他们的地区。
答案 1 :(得分:5)
使用操作系统的区域设置将日期转换为字符串 约定。
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toLocaleString
转换一年时,toLocaleString的行为与toString类似 操作系统格式不正确。
答案 2 :(得分:2)
我刚刚在Chrome的控制台中检查了日期,发现了演示文稿格式的差异。希望这可以提供帮助。
var d = new Date();
console.log(d.toLocaleString()); //"04.09.2016, 15:42:44"
console.log(d.toString()); //"Sun Sep 04 2016 15:42:44 GMT+0300 (FLE Daylight Time)"
答案 3 :(得分:1)
很多参考文献,但没有一篇是权威性的。请注意,Mozilla的文档适用于JavaScript,它是针对浏览器的ECMAScript版本。其他浏览器使用其他实现,因此,虽然MDN文档很有用,但它不具有权威性(它也是社区维基,因此甚至不是官方的Mozilla文档),也不一定适用于其他浏览器。
最终参考是ECMAScript语言规范,其中Date.prototype.toString和Date.prototype.toLocaleString的行为以浏览器独立的术语解释。
值得注意的是两种方法,字符串依赖于实现,这意味着不同的浏览器将返回不同的字符串。
答案 4 :(得分:0)
只需添加。除日期外,它还转换/格式化普通变量。 这两个函数都用于将传递的参数格式化/转换为字符串,但是如何格式化参数才是重点。
toLocalestring()用于返回格式化的字符串,具体取决于调用函数的地理位置。
为简单起见。 举这个例子。 它显示 toString()不会格式化,但是 toLocaleSting()将如何格式化(基于地理位置的设置)。
let number = 1100;
console.log(number.toString()); // "1100"
console.log(number.toLocaleString()) // 1,100
let number = 1100;
console.log(number.toString());
console.log(number.toLocaleString());
对于程序员来说,避免编写额外的函数来格式化字符串或日期很有用。 toLocaleString()将解决此问题。
希望您会发现它有所帮助且有趣。