在javascript中转换日期格式

时间:2016-01-08 17:54:53

标签: javascript

我有一个代码可以ajax进行php file来电。 此php file将数据库中的某些数据作为json返回。 数据包含timestamp类型的列,以及它的外观:

2015-10-24 18:04:28

但我希望将此格式转换为如下所示:

1445724268000

我尝试使用Date.parse()但是当我log.console时,我NaN

4 个答案:

答案 0 :(得分:2)

"2015-10-24 18:04:28"不是Date.parse()new Date()的有效参数值。不同的浏览器可能会以不同的方式解释非标准值,因此它可能适用于某些人,即使它失败了,具体取决于所使用的浏览器。

根据the ECMAScript 2015 spec,日期字符串应为a simplification of the ISO 8601 extended format:YYYY-MM-DDTHH:mm:ss.sssZ(例如"2015-10-24T18:04:28")。

如果您可以使用字符T替换日期和时间之间的空格字符,则您的字符串应该成为可接受的日期字符串。

这是一个有效的例子:

var inputs = document.querySelectorAll("input");
var outputs = document.querySelectorAll("span");

for(var i = 0; i < inputs.length; i++){
  (function(index){
    inputs[index].addEventListener("keyup",function(){updateOutput(index);});
  })(i);
  updateOutput(i);
}

function updateOutput(index){
  var date = new Date(inputs[index].value);
  outputs[index].innerHTML = date.getTime();
}
<input type="text" value="2015-10-24 18:04:28" id="inputOne"/><span id="outputOne"></span> (works in Chrome, could fail in IE and Firefox)<br/>
<input type="text" value="2015-10-24T18:04:28" id="inputOne"/><span id="outputOne"></span> (works in all browsers)<br/>
<input type="text" value="October 24, 2015 18:04:28" id="inputOne"/><span id="outputOne"></span> (this usually works too, but isn't in the spec)

注意:某些来源(MDN)也表明日期字符串可以是an IETF-compliant RFC 2822 timestamp(例如"October 24, 2015 18:04:28"),但这不是实际规范的一部分,未来的JavaScript实现可能不支持。

答案 1 :(得分:1)

由于收到的时间戳是字符串,请将空格替换为T

var timestampString = "2015-10-24 18:04:28"; //Your input

您只需将其转换为有效的日期格式并使用getTime()方法。

var timestamp = new Date(timestampString.replace(' ','T')).getTime();

答案 2 :(得分:0)

Date.getTime()返回纪元字符串(例如,757382400000

所以要转换你的时间戳,你可以写:

var date = new Date(timestamp);
var epochString = date.getTime();

如果您输出到控制台(console.log(epochString),您最终会得到类似757382400000的内容。

答案 3 :(得分:0)

如果经常使用上述格式,我会这样做:

function formatDate(myFormat) {
  var dateTime = myFormat.split(" ");
  var myDate = new Date (dateTime[0]);
  var myTime = dateTime[1].split(":");   
  var result = new Date(
   myDate.getYear() + 1900, 
   myDate.getMonth(), 
   myDate.getDate(),
   myTime[0], 
   myTime[1],
   myTime[2], 
   0);
  return result;
}

var date = formatDate("2015-10-24 18:04:28");
alert(date.getTime());

这会为您提供本地日期和时间。您可能希望切换到UTC值。

有关日期的详情,请参阅http://www.w3schools.com/js/js_dates.asp

这里是JSFiddle