转换javascript中的日期格式

Convert the format of date in javascript

本文关键字:日期 格式 javascript 转换      更新时间:2023-09-26

我有一个代码,它从php file调用ajax。该php file从数据库返回一些数据作为json。数据包含一个timestamp类型的列,其外观如下:

2015-10-24 18:04:28

但我想把这种格式转换成这样:

1445724268000

我试着使用Date.parse(),但当我使用log.console时,我得到了NaN

"2015-10-24 18:04:28"不是Date.parse()new Date()的有效参数值。不同的浏览器可能对非标准值的解释不同,因此它可能对某些人有效,即使它对您来说失败了,这取决于使用的浏览器。

根据ECMAScript 2015规范,日期字符串应该是ISO 8601扩展格式的简化: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)也表示日期字符串可以是符合IETF的RFC 2822时间戳(如"October 24, 2015 18:04:28"),但这不是实际规范的一部分,在未来的JavaScript实现中可能不支持。

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

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

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

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

Date.getTime()返回epoch字符串(例如757382400000

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

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

如果您向控制台输出(console.log(epochString),您将得到类似757382400000的结果。

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

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。