当前位置: 首页 > 面试题库 >

IE11中的ToLocaleDateString()更改

谭志用
2023-03-14
问题内容

在IE 11中,ToLocaleDateString()获得了有趣的结果。返回的字符串在浏览器中看起来不错,例如“ 1/28/2014 11:00:46
AM”,但是如果我将该值复制并粘贴到纯文本编辑器中,它看起来像这样:“?1?/? 28?/?2014?11?:?00?:?46??AM”。

有趣的是,如果我将文本粘贴到Microsoft产品中,看起来还不错…问题是,如果您尝试以编程方式使用该值来创建日期,则该日期无效。您可以通过在IE11中打开一个控制台并使用ToLocaleDateString()创建一个新日期,然后尝试使用生成的字符串以javascript或您选择的语言创建一个新日期来测试这一点(我我在这里使用ASP.NET
…)。

我是在做错什么,还是应该以其他方式与javascript日期进行交互?我如何摆脱那些时髦的符号?

编辑:
由于下面的评论,我能够弄清楚未显示的字符是什么,它们是从左到右的标记。根据我将编辑器粘贴的值和编辑器设置为使用的编码,文本将以不同的方式显示:有时带有“?”,有时没有。


问题答案:

问题是,如果您尝试以编程方式使用该值来创建日期,则该日期无效。

我是在做错什么,还是应该以其他方式与javascript日期进行交互?

是的,您做错了。您不应该使用旨在格式化某些内容以实现特定于区域设置的人类显示的功能,并且不要期望输出是机器可解析的。任何的输出的toLocaleStringtoLocaleDateStringtoLocaleTimeString仅仅是用来人类可读显示。(正如Bergi在评论中澄清的,toString它也用于人类展示,但是ECMA§15.9.4.2表示应该往返)

您可能会获得LTR标记,因为您的显示语言环境是RTL。除此之外,请考虑语言环境将始终影响输出。也许您的语言环境使用dd / mm / yyyy格式而不是mm
/ dd / yyyy格式。或者您的语言环境要求使用亚洲或阿拉伯字符。在确定显示格式时,所有这些都是考虑因素,但从不适合机器解析。

还应考虑ECMAScript规范没有为这些方法的输出定义任何特定的格式规则,并且不同的浏览器将产生不同的结果。

如果意图不是要显示给用户,则应改用以下功能之一:

  • toISOString 将为您提供ISO8601 / RFC3339格式的时间戳
  • toGMTStringtoUTCString将为您提供RFC822 / RFC1123格式的时间戳
  • getTime 将为您提供整数毫秒级的Unix时间戳

以上所有都将返回基于UTC的值。如果你想在本地时间,你可以建立自己的字符串与各种存取功能(getFullYeargetMonth,等…),或者你可以使用库如moment.js:

这使用moment.js返回ISO8601格式的本地时间+与日期的偏移量:

moment(theDate).format()   // ex:  "2014-08-14T13:32:21-07:00"


 类似资料:
  • toLocaleDateString 方法 根据本地时间把 Date 对象的日期部分转换为字符串,并返回结果。 语法: dateObject.toLocaleDateString(); 返回值: dateObject 的日期部分的字符串表示,以本地时间区表示,并根据本地规则格式化。 示例: var DATE = new Date(); console.log( DATE.toL

  • 描述 (Description) toLocaleDateString()方法将日期转换为字符串,使用操作系统的语言环境约定返回“time”部分。 语法 (Syntax) 下面给出了toLocaleDateString()方法的语法。 Date.toLocaleDateString() 返回值 (Return Value) 使用操作系统的语言环境约定返回“日期”部分。 例子 (Example)

  • 描述 (Description) toLocaleDateString()方法将日期转换为字符串,使用操作系统的语言环境约定返回“time”部分。 语法 (Syntax) 下面给出了toLocaleDateString()方法的语法。 Date.toLocaleDateString() 返回值 (Return Value) 使用操作系统的语言环境约定返回“日期”部分。 例子 (Example)

  • Javascript date toLocaleDateString()方法将日期转换为字符串,使用操作系统的语言环境约定返回“日期”部分。 语法 (Syntax) Date.toLocaleString() 返回值 (Return Value) 使用操作系统的语言环境约定返回“日期”部分。 例子 (Example) var dt = new Date(1993, 6, 28, 1

  • 本文向大家介绍JavaScript中的toLocaleDateString()方法使用简介,包括了JavaScript中的toLocaleDateString()方法使用简介的使用技巧和注意事项,需要的朋友参考一下  JavaScript Date.toLocaleDateString()方法的日期转换为字符串,使用操作系统的语言环境的约定返回“日期”部分。 语法 下面是参数的详细信息:    

  • 问题内容: 我正在从SQL数据库中提取日期,该日期将其视为从午夜开始的日期。当我开始使用它们时,它会正确格式化它们,但是不会浪费一天。 格式化之前: 格式化后: 代码: 问题答案: 如果您分段运行代码,则会注意到产生的输出类似(我的计算机现在处于EDT中)。 这是因为(doc): 假定时区的差异 给定日期字符串为“ 2014年3月7日”,parse()假定为本地时区,但是给定ISO格式(如“ 20