toLocaleString、toLocaleDateString 和 toLocaleTimeString 之间有什么区别?
What is the difference between toLocaleString, toLocaleDateString, and toLocaleTimeString?
试图阅读文档,但似乎无法找到它们之间的区别(如果有的话)。它们似乎都接受相同的参数和语言环境,而且它们似乎 return 相同的值。
它们只是同一个函数的别名吗?或者它们之间真的有区别吗?
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"
如果您为至少一个日期元素(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
如您所见,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
toLocaleString()
允许您按照自己喜欢的方式设置日期格式,不会添加任何额外内容。
由于所有方法都接受 Intl.DateTimeFormat 作为构造字符串的选项,因此它们都将 return 相同的字符串用于相同的选项。
但是 ECMA
所有三个文档都明确提到 The contents of the String are implementation-dependent
但方法的意图不同,应按照建议使用。
文档还说 implementations that do not include ECMA-402 support must not use those parameter positions for anything else.
每个允许的选项如下
toLocaleString => "any", "all"
from
toLocaleDateString => "date", "date"
from
toLocaleTimeString => "time", "time"
from
试图阅读文档,但似乎无法找到它们之间的区别(如果有的话)。它们似乎都接受相同的参数和语言环境,而且它们似乎 return 相同的值。
它们只是同一个函数的别名吗?或者它们之间真的有区别吗?
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"
如果您为至少一个日期元素(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
如您所见,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
toLocaleString()
允许您按照自己喜欢的方式设置日期格式,不会添加任何额外内容。
由于所有方法都接受 Intl.DateTimeFormat 作为构造字符串的选项,因此它们都将 return 相同的字符串用于相同的选项。
但是 ECMA
所有三个文档都明确提到 The contents of the String are implementation-dependent
但方法的意图不同,应按照建议使用。
文档还说 implementations that do not include ECMA-402 support must not use those parameter positions for anything else.
每个允许的选项如下
toLocaleString => "any", "all"
from
toLocaleDateString => "date", "date"
from
toLocaleTimeString => "time", "time"
from