首页 > 解决方案 > javascript中日期格式错误的格式

问题描述

我想格式化一个格式错误的日期。

例如:

2019 年 3 月 8 日下午 5:13 GMT+0100

如果它具有以下格式,它将起作用:

2019 年 3 月 8 日 17:13:00 GMT+0100

有什么方法可以快速格式化日期,这样就可以被默认的javascript Date 函数解析了?

我试图通过 pm/am 找到 substr。但我不知道如何获取其余部分(下午 5:13)以及如何“自动”格式化它。我想过添加 12,但我不确定如何获取子字符串。

提前致谢。

编辑:

至于现在我正在使用 momentJs,但这也不起作用。

function returnFormatedDate(dt)
{
    return moment(dt).format('DD.MM.YY HH:mm');
};

返回“无效日期”

Edit2:示例代码,但我更喜欢 Chris G. 的代码:

var str = "Mar 8, 2019 5:13pm GMT+0100";
var parts = str.split(" ");
console.log(parts);
if(3 in parts)
{
  badPart = parts[3];
  
  if(badPart.includes("pm"))
  {
    var newBadPart = badPart.replace('pm', '');
    var moddedDate = newBadPart.split(":");
    moddedDate[0] = 12 + Number(moddedDate[0]);
    badPart = moddedDate.join(":");
  }
  else if(badPart.includes("am"))
  {
   badPart.replace("am", ""); 
  }
  var newParts = [parts[0], parts[1], parts[2], badPart, parts[4]];
  var dte = new Date(newParts.join(" "));
  console.log(dte);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

标签: javascriptdateformat

解决方案


这是我的解决方案:

var str = "Mar 8, 2019 5:13pm GMT+0100";
var parts = str.split(" ");
console.log(parts);
if(3 in parts)
{
  badPart = parts[3];
  
  if(badPart.includes("pm"))
  {
    var newBadPart = badPart.replace('pm', '');
    var moddedDate = newBadPart.split(":");
    moddedDate[0] = 12 + Number(moddedDate[0]);
    badPart = moddedDate.join(":");
  }
  else if(badPart.includes("am"))
  {
   badPart.replace("am", ""); 
  }
  var newParts = [parts[0], parts[1], parts[2], badPart, parts[4]];
  var dte = new Date(newParts.join(" "));
  console.log(dte);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这是 Chris G,我更喜欢它: https ://jsfiddle.net/khrismuc/2esxhyqb


推荐阅读