【问题标题】:javascript date format (international settings)javascript 日期格式(国际设置)
【发布时间】:2011-04-21 20:39:49
【问题描述】:

javascript Date.toLocaleDateString() 很傻。

我需要一个可以让我根据喜好简化日期的功能。

如果有一个函数可以读取浏览器日期格式(复数)并采用可选参数告诉它使用哪种格式,那就太好了。

我会解释: “MM/DD/YYYY”非常适合美国和任何愿意忍受他们/我们的人。 “DD/MM/YYYY”是对简短日期格式感兴趣的人最常用的格式。 “Weekday, Month DayOfMonth, Year”仅在您想要超长且依赖于语言的输出时才有用。

我可以用这个:

var s = "/";
if(locale=='us')
  var dateString = Date.getDate()+s+Date.getDay()+s+Date.getFullYear();
else
  var dateString = Date.getDay()+s+Date.getDate()+s+Date.getFullYear();

但我正在寻找一种更优雅的解决方案,它允许我存储日期掩码或格式字符串,以便人们可以根据自己的喜好更改日期的显示方式。 (如果他们足够喜欢的话,即使是超长的语言相关的。)

我应该重新设计 Date.toString() 方法的原型来解释参数吗?有没有更好的办法?

【问题讨论】:

    标签: javascript date


    【解决方案1】:

    您可以使用 DateTimeFormat Api。

    var now = new Date(0)
    console.log(new Intl.DateTimeFormat('en-US').format(now)); //12/31/1969
    console.log(new Intl.DateTimeFormat('en-GB').format(now)); //31/12/1969

    有关 Mozilla 文档,请参阅此链接: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat

    优点:

    • 您不必向项目添加更多库,从而增加 包大小。
    • 您不必担心浏览器支持,因为几乎每个浏览器都支持它。 https://caniuse.com/#search=intl

    PS:如果您不关心包的大小并且想要更“用户友好”且易于使用的东西,请参阅 moment.jsluxon,它们都是用于日期操作的出色库。

    【讨论】:

      【解决方案2】:

      我遇到了一个非常强大的库,它负责处理日期和通用格式: http://blog.stevenlevithan.com/archives/date-time-format (错误链接) http://jawe.net/wiki/dev/jsdateformat/home

      非常强大且可配置。 (它支持我需要的java风格的格式,比如“MEDIUM”日期格式)

      Moment 似乎很有用且功能齐全(只是没有 Medium 格式):https://github.com/timrwood/moment

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 2016-07-10
        • 2013-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多