用JavaScript格式的日期格式不正确

时间:2019-07-19 10:29:48

标签: javascript date format

我想格式化日期,但格式不正确。

例如:

  

2019年3月8日,格林尼治标准时间+0100 5:13 pm

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

  

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

有什么方法可以快速格式化日期,以便可以通过默认的javascript Date函数进行解析?

我试图在pm / am之前找到子目录。但是我不知道如何获取其余的内容(下午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>

2 个答案:

答案 0 :(得分:0)

这是解决方案:

var timestamp = "Mar 8, 2019 5:13pm GMT+0100";

var cur_date = timestamp.replace(/T/, ' ').replace(/\..+/, '').substr(0, 19);
console.log(cur_date)

答案 1 :(得分:0)

这是我的解决方案:

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's,我更喜欢:  https://jsfiddle.net/khrismuc/2esxhyqb