【问题标题】:converting a date in format dd-MMM-YYYY to date or dd/mm/yyyy format in JS将 dd-MMM-YYYY 格式的日期转换为 JS 中的日期或 dd/mm/yyyy 格式
【发布时间】:2016-05-20 07:53:27
【问题描述】:

我需要将 dd-MMM-YYYY 或 dd/mm/yyyy(两种格式都可能)显示的日期转换为 JavaScrpit 中的正常毫秒。我最初使用 datePicker 但不支持格式 dd-MMM-YYYY 。有没有其他方法可以在不使用 moment.js 的情况下做到这一点?

我使用过的代码:

function parseDate(input) {
  var map = {
            Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5,
            Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11
            };
  input = input.split('-');
  return (new Date(input[2], map[input[1]], input[0]));
}

【问题讨论】:

  • 我编写了一个函数来解析日期,以防它的格式为 dd-MMM-YYYY 。但我正在寻找是否有更好的方法来做到这一点。
  • 如果你分享你尝试过的代码,建议和帮助会很容易。
  • 为我以 dd-MMM-YYYY 格式解析日期的部分添加了代码
  • 你可以用几千行moment.js来替换你的小函数,但是为什么呢?解析 dd/mm/yyyy 更加简单。您可以使用 split(/[-\/]/)map[input[1]] || input[1] - 1 在函数中包含这两种格式

标签: javascript date datetime datepicker


【解决方案1】:

这行得通:

function parseDate(input) {
      var map = {jan: 1, feb: 2, mar: 3, apr: 4, may: 5, jun: 6,
                 jul: 7, aug: 8, sep: 9, oct: 10, nov: 11, dec: 12};
      input = input.split(/[-\/]/);
      alert(map[input[1].toLowerCase()]);
      return new Date(input[2], (map[input[1].toLowerCase()] || input[1]) - 1, input[0]);
    }

【讨论】:

    【解决方案2】:

    您可以轻松修改解析函数以处理 dd-mmm-yyyy 和 d/m/y:

    function parseDate(input) {
      var map = {Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5,
                 Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11};
      input = input.split(/[-\/]/);
      return new Date(input[2], input[1] in map? map[input[1]] : input[1]-1, input[0]);
    }
    
    document.write(parseDate('10-Jan-2016') + '<br>' + parseDate('10/1/2016'))

    虽然我会将月份名称设为小写并使用map[input[1].toLowerCase()] 以获得更大的兼容性(例如处理二月、二月和二月)。

    【讨论】:

    • 当月份为 Jan 时,此代码给出无效日期。我尝试更改日期 2016 年 1 月 10 日,但它给出了无效日期
    • 糟糕,抱歉。对于 Jan,map[input[1]] 返回 0,这是错误的,因此 'Jan' 被传递给构造函数。现已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多