Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Intl DATETIMETFORMAT.format和Date.toLocaleString输出不同的结果_Javascript_Date_Internationalization - Fatal编程技术网

Javascript Intl DATETIMETFORMAT.format和Date.toLocaleString输出不同的结果

Javascript Intl DATETIMETFORMAT.format和Date.toLocaleString输出不同的结果,javascript,date,internationalization,Javascript,Date,Internationalization,我不确定这是在哪里定义的,但是如果我有一个日期对象,并且希望使用特定的语言环境转换为字符串,我可以使用扩展名“toLocaleString”、“toLocaleDateString”和/或“toLocaleTimeString” 这些都可以很好地工作,但是对于大量的项目来说,这可能是一个问题(我相信,因为扩展方法可能会为每个日期创建一个新的DateTimeFormat对象) 因此,我按照那里的建议创建了一个新的DateTimeFormat,并尝试使用format方法格式化日期 我的问题是form

我不确定这是在哪里定义的,但是如果我有一个日期对象,并且希望使用特定的语言环境转换为字符串,我可以使用扩展名“toLocaleString”、“toLocaleDateString”和/或“toLocaleTimeString”

这些都可以很好地工作,但是对于大量的项目来说,这可能是一个问题(我相信,因为扩展方法可能会为每个日期创建一个新的DateTimeFormat对象)

因此,我按照那里的建议创建了一个新的DateTimeFormat,并尝试使用format方法格式化日期

我的问题是format方法似乎将日期格式化为“only date”(无时间),除将options对象传递给DateTimeFormat之外,我无法指定其他日期。。。但这意味着我需要一种特定的格式,事实并非如此(因为我不想拥有自己的语言环境格式数据库)。。。我想要这些日期的默认格式,就像调用toLocaleString/toLocaleDateString/toLocaleTimeString一样

有没有办法获得这些选项的默认格式?我希望能够使用特定区域设置的默认格式设置我的日期时间/日期/时间


我知道我需要3个DateTimeFormat对象(一个用于完整日期/时间,一个用于日期,另一个用于时间),但如果我可以将正确的初始化对象传递给每个对象,那就可以了。

您所说的“这些日期的默认格式”是什么意思?如果您指的是内置toLocaleString提供的,则这取决于实现,不一定与主机的日期格式首选项(例如Chrome)匹配。没有可靠的方法来确定主机日期格式设置,这是一个20年来一直存在的问题,尽管同时ECMAScript中添加了所有的糖分,但内置的日期解析和格式设置与以往一样毫无用处。顺便说一句,为每个位置设置日期格式不是国际化,而是本地化。这个标签似乎在其描述中承认:“……规划和实施产品和服务的过程,以便它们能够轻松适应特定的当地语言和文化,这一过程称为本地化。”。国际化应该使用一种到处都能理解的格式,这更容易实现。我不需要“主机”日期格式本身。我需要属于指定区域设置的格式。对于每个区域设置,主机都有一个关于如何显示特定区域设置的日期/数字的内部定义。此外,您还搞错了国际化是什么。国际化就是翻译+本地化。这并不容易,但如果没有正确的计划就更难了。例如,文本长度很难预先计划。Intl对象中的“区域设置”是用语言代码表示的,因此不是真正的区域设置。我对日期的处理方法是使用一种明确的格式,因为一个人的位置并不一定决定他们希望看到的格式。使用明确的格式至少意味着每个人都能正确解释日期。你所说的“这些日期的默认格式”是什么意思?如果您指的是内置toLocaleString提供的,则这取决于实现,不一定与主机的日期格式首选项(例如Chrome)匹配。没有可靠的方法来确定主机日期格式设置,这是一个20年来一直存在的问题,尽管同时ECMAScript中添加了所有的糖分,但内置的日期解析和格式设置与以往一样毫无用处。顺便说一句,为每个位置设置日期格式不是国际化,而是本地化。这个标签似乎在其描述中承认:“……规划和实施产品和服务的过程,以便它们能够轻松适应特定的当地语言和文化,这一过程称为本地化。”。国际化应该使用一种到处都能理解的格式,这更容易实现。我不需要“主机”日期格式本身。我需要属于指定区域设置的格式。对于每个区域设置,主机都有一个关于如何显示特定区域设置的日期/数字的内部定义。此外,您还搞错了国际化是什么。国际化就是翻译+本地化。这并不容易,但如果没有正确的计划就更难了。例如,文本长度很难预先计划。Intl对象中的“区域设置”是用语言代码表示的,因此不是真正的区域设置。我对日期的处理方法是使用一种明确的格式,因为一个人的位置并不一定决定他们希望看到的格式。使用明确的格式至少意味着每个人都能正确解释日期。