toLocaleString、toLocaleDateString 和 toLocaleTimeString 之间有什么区别?

Svi*_*ish 6 javascript locale string-formatting

试图阅读文档,但似乎无法找到它们之间的区别(如果有的话)。它们似乎都接受相同的参数和语言环境,并且它们似乎返回相同的值。

它们只是同一个函数的别名吗?或者它们之间实际上有区别吗?

const locale = 'no-nb'
const options = {
  day: '2-digit', month: 'long',
  hour: '2-digit', minute: '2-digit'
}

new Date().toLocaleString(locale, options)
"18. mai, 15"

new Date().toLocaleDateString(locale, options)
"18. mai, 15"

new Date().toLocaleTimeString(locale, options)
"18. mai, 15"
Run Code Online (Sandbox Code Playgroud)

Rob*_*bok 7

如果您为至少一个日期元素 ( day, month, year) 和至少一个时间元素 ( hour, minute, second)提供自定义格式,所有这些都会给出完全相同的结果。

它们的目的和默认行为不同。尝试跳过所有自定义时间格式,例如:

new Date().toLocaleString('no-nb', {day: '2-digit'})
// 18

new Date().toLocaleDateString('no-nb', {day: '2-digit'})
// 18

new Date().toLocaleTimeString('no-nb', {day: '2-digit'})
// 18, 15:37:37
Run Code Online (Sandbox Code Playgroud)

如您所见,toLocaleTimeString()始终将时间放在那里,如果您未指定,则使用默认时间格式。

toLocaleDateString() 做同样的事情,但对于日期而不是时间:

new Date().toLocaleString('no-nb', {hour: '2-digit'})
// 15

new Date().toLocaleDateString('no-nb', {hour: '2-digit'})
// 18.05.2020, 15

new Date().toLocaleTimeString('no-nb', {hour: '2-digit'})
// 15
Run Code Online (Sandbox Code Playgroud)

toLocaleString() 允许您按照自己喜欢的方式格式化日期,它不会添加任何额外内容。