【问题标题】:jquery/javascript convert date string to datejquery/javascript 将日期字符串转换为日期
【发布时间】:2011-02-27 19:18:57
【问题描述】:

我有一个日期字符串“2010 年 2 月 28 日星期日”,我想将其转换为格式为 @ MM/DD/YYYY 但不知道如何转换的 js 日期对象。有什么建议?

【问题讨论】:

  • 也许 split() 更快,并且您可以编写更短的代码:)

标签: javascript jquery string date object


【解决方案1】:

我会选择date.js,否则你需要使用自己的格式化函数。

【讨论】:

  • 应该注意 date.js 破坏了 jQuery UI 日期选择器,因为它改变了 Date 原型。 jQuery 核心表示他们不会修复与此相关的错误。
【解决方案2】:
var stringDate = "Sunday, February 28, 2010";

var months = ["January", "February", "March"]; // You add the rest  :-)

var m = /(\w+) (\d+), (\d+)/.exec(stringDate);

var date = new Date(+m[3], months.indexOf(m[1]), +m[2]);

数组上的indexOf 方法仅在较新的浏览器上受支持(即不支持 IE)。您需要自己进行搜索或使用提供相同功能的众多库之一。

此外,代码缺少任何应添加的错误检查。 (字符串不匹配正则表达式,不存在月份等)

【讨论】:

    【解决方案3】:

    如果您使用 jQuery 运行,则可以使用 datepicker UI 库的 parseDate 函数将字符串转换为日期:

    var d = $.datepicker.parseDate("DD, MM dd, yy",  "Sunday, February 28, 2010");
    

    然后用formatDate方法跟进,得到你想要的字符串格式

    var datestrInNewFormat = $.datepicker.formatDate( "mm/dd/yy", d);
    

    如果你没有使用 jQuery,当然它可能不是最好的计划,因为你需要 jQuery 核心以及 datepicker UI 模块......最好遵循上面 Segfault 的建议来使用 date.js .

    HTH

    【讨论】:

    • +1 使用 jquery 的答案。该问题的最接近答案。如果您使用的是 jquery,则无需添加另一个库。
    • 不,这是不对的。 datepicker 不是 jQuery 的一部分。它是 jQuery UI 的一部分。如果您只有核心库,那么您实际上是在添加另一个库。如果您没有或不打算使用 jQuery UI,那么我会看看 Moment.js。
    • @Colin,这就是我解释“你需要 jQuery 核心以及 datepicker UI 模块”的意思。
    • @isherwood 我不同意。我认为这是一个非常模糊的句子。我读到它需要 jQuery 核心和它的一些子模块组件。不清楚您是否还需要包含 jQuery UI。事实上,有很多具有“日期选择器 UI 模块”的 JS 库。因此,假设您确实推断出要包含另一个库,但仍然不清楚 jQuery UI 是否是要获取的库。
    【解决方案4】:

    如果只需要一次,加载插件就有点过头了。

    对于日期“dd/mm/yyyy”,这对我有用:

    new Date(d.date.substring(6, 10),d.date.substring(3, 5)-1,d.date.substring(0, 2));
    

    mm/dd/yyyy只需反转月份和日期,语法为new Date(y,m,d)

    【讨论】:

      【解决方案5】:

      我使用 javascript 日期函数 toLocaleDateString 来获取

      var Today = new Date();
      var r = Today.toLocaleDateString();
      

      r 的结果将是

      11/29/2016
      

      更多信息请访问: http://www.w3schools.com/jsref/jsref_tolocaledatestring.asp

      【讨论】:

        【解决方案6】:

        使用 moment js 进行任何日期操作。

        https://momentjs.com/

        console.log(moment("Sunday, February 28, 2010").format('MM/DD/YYYY'));
        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

        【讨论】:

          猜你喜欢
          • 2011-06-13
          • 1970-01-01
          • 1970-01-01
          • 2017-04-28
          • 2011-11-28
          • 2011-03-07
          • 2015-10-01
          • 2016-02-28
          相关资源
          最近更新 更多