将格式为dd-MMM-YYYY的日期转换为JS中的日期或dd / mm / yyyy格式

时间:2016-02-10 04:58:35

标签: javascript date datetime datepicker

我需要在JavaScrpit中将dd-MMM-YYYY或dd / mm / yyyy(两种格式都可能)中显示的日期转换为正常毫秒。我最初使用的是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]));
}

2 个答案:

答案 0 :(得分:0)

您可以轻松修改解析功能以处理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'))
&#13;
&#13;
&#13;

虽然我将月份名称设为小写并使用map[input[1].toLowerCase()]以获得更好的兼容性(例如,处理2月,非洲和FEB)。

答案 1 :(得分:0)

这有效:

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]);
    }
相关问题