【问题标题】:toLocaleString return unexcepted characher in IEtoLocaleString 在 IE 中返回意外字符
【发布时间】:2017-01-26 15:02:25
【问题描述】:

我希望toLocaleString 返回“星期一”(6 个字符),

但是 IE 给我返回了一些意想不到的字符,

如何在没有其他扩展 API(moment.js 等)的情况下正确获取工作日

IE11:

var weekday = new Date('2015-11-23').toLocaleString("en-us", { weekday: 'long'});

weekday.toString() //"Monday"
weekday.length //7
weekday.charCodeAt(0) //8206 <-- what is this

Chrome53:

var weekday = new Date('2015-11-23').toLocaleString("en-us", { weekday: 'long'});

weekday.toString() //"Monday"
weekday.length //6
weekday.charCodeAt(0) //77

【问题讨论】:

  • 你为什么要关心?你只是用它来显示日期,对吧?
  • 因为我需要对它们进行排序,例如 ('Monday', 'Tuesday' ...) 或 ('Sunday', 'Monday' ...)

标签: javascript internet-explorer weekday


【解决方案1】:

好的,我做了一些调查:

字符 8206 是 Left-to-right mark,很可能是 MS 作为其国际化规则的一部分添加的。

它很容易被剥离。

var stripped = weekday.replace(/\u200E/g, "");
console.log(stripped.length)

请注意:您可能还会遇到字符 8207,它是一个从右到左的标记 - 可以很容易地去除它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    相关资源
    最近更新 更多