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

Posted

技术标签:

【中文标题】将 dd-MMM-YYYY 格式的日期转换为 JS 中的日期或 dd/mm/yyyy 格式【英文标题】:converting a date in format dd-MMM-YYYY to date or dd/mm/yyyy format in JS 【发布时间】: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 在函数中包含这两种格式 【参考方案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' 被传递给构造函数。现已修复。

以上是关于将 dd-MMM-YYYY 格式的日期转换为 JS 中的日期或 dd/mm/yyyy 格式的主要内容,如果未能解决你的问题,请参考以下文章

将日期时间转换为dojo中dd-MMM-yyyy HH:MM的正确日期时间格式

如何将给定的字符串格式解析为 dd-MMM-yyyy hh:mm:ss:aa?

如何将日期格式“dd-MMM-yy”的字符串转换为DateType [重复]

在 pyspark 问题中转换 24 小时日期格式

如何在引导日期选择器中更改日期格式(dd-mmm-yyyy)

js怎么把时间戳转换为日期格式