【问题标题】:toLocaleDateString Javascript date format issues [duplicate]toLocaleDateString Javascript日期格式问题[重复]
【发布时间】:2013-07-01 20:01:03
【问题描述】:

我有一个脚本,我想将日期格式化为短日期格式,即:

2013 年 7 月 3 日或 2013 年 7 月 3 日,第一种日期格式在 Chrome 中的呈现方式与其他浏览器类似,但在其他浏览器中则不然 - 它显示日期月份名称和年份。

function dateFormatter(date) {
  return date.toLocaleDateString();
}

有点困惑为什么会这样。是不是因为那个浏览器不支持 tolocalDateString();

我是否需要构建一个自定义日期字符串才能使其正常工作?

对不起,如果它有点含糊 - 我看过 W3C 网站,但有时不信任该网站。

【问题讨论】:

    标签: javascript string date datetime cross-browser


    【解决方案1】:

    toLocaleDateString 的默认格式是实现定义的。如果您想精确控制显示的内容,请使用支持locales and options argumentstoLocaleDateString 的浏览器。不幸的是,目前这意味着只有 Chrome。

    如果您不关心用户及其语言环境,并且想用美国日期格式混淆每个人,那么可以,您可以按照@kennebec 的建议对日期部分进行硬编码。

    【讨论】:

    • 感谢您提及选项参数。
    【解决方案2】:
    function dateFormatter(date){
        if(Date.parse('2/6/2009')=== 1233896400000){
            return [date.getMonth()+1, date.getDate(), date.getFullYear()].join('/');
        }
        return [date.getDate(), date.getMonth()+1, date.getFullYear()].join('/');
    }
    

    【讨论】:

    • 这根本不支持区域设置...
    • @kennebec 效果很好。我尝试了类似的东西,但老实说我只是把它搞砸了。但是,是的,工作顺利。干杯。
    • @kennebec,if 条件是怎么回事,为什么我们需要这个奇怪的 2/6/2009 日期检查?
    • 这是一个区域设置问题...有些地方月份是第一位的,而在其他地方则是第二位......所以这实际上是完全区域设置感知的
    • @SerjSagan:此答案在三个方面不支持区域设置:(a) Date.parse()ISO 8601-based format 以外的字符串的行为是 implementation-defined。 (b) 输出使用固定分隔符/,并且 (c) 不考虑短日期格式将 year 放在首位的语言环境。
    猜你喜欢
    • 2013-07-03
    • 2021-01-20
    • 2017-12-20
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2014-03-14
    • 2012-09-29
    相关资源
    最近更新 更多