2

我从数据库中获取值,这是一个时间戳。我需要使用 javascript 将其转换为 mm/dd/yyyy H:i:s。我尝试了以下代码。但它不能在firefox / ie中工作。但它在chrome中工作..如何解决它。

function formatDate(value){
if(value){
    Number.prototype.padLeft = function(base,chr){
        var  len = (String(base || 10).length - String(this).length)+1;
        return len > 0? new Array(len).join(chr || '0')+this : this;
    }
var d = new Date(value),
dformat = [ (d.getMonth()+1).padLeft(),
            d.getDate().padLeft(),
            d.getFullYear()].join('/')+
           ' ' +
          [ d.getHours().padLeft(),
            d.getMinutes().padLeft(),
            d.getSeconds().padLeft()].join(':');
 return dformat;
}

我在 Firefox 中得到 NaN/NaN/NaN/NaN/NaN/NaN,即。非常感谢任何帮助

4

3 回答 3

5

您的代码缺少尾随}. 如果你格式化得更好,你会看到:

function formatDate(value){
  if(value){
    Number.prototype.padLeft = function(base,chr){
      var len = (String(base || 10).length - String(this).length)+1;
      return len > 0? new Array(len).join(chr || '0')+this : this;
    }
    var d = new Date(value),
    dformat = [ (d.getMonth()+1).padLeft(),
                 d.getDate().padLeft(),
                 d.getFullYear()].join('/')+
              ' ' +
              [ d.getHours().padLeft(),
                d.getMinutes().padLeft(),
                d.getSeconds().padLeft()].join(':');
    return dformat;
  }
}

它现在在 Firefox 中运行良好。

请注意,您Number.prototype.padLeft每次调用此函数时都在定义。最好把它移出函数体。


编辑根据我的评论,这对您来说失败的原因是该Date对象仅接受某些格式的字符串。此外,在我看来,您的函数只是在更改字符串的格式:您实际上不需要费心处理日期,而是只需对输入进行字符串操作:

var formatDate = function(dateString) {
  // Convert 'yyyy-mm-dd hh:mm:ss' to 'mm/dd/yyyy hh:mm:ss'
  return dateString.replace(/^(\d{4})-(\d{2})-(\d{2})/, '$2/$3/$1');
};

容易多了!

于 2013-03-20T11:29:22.663 回答
1
function formatDate(d) 
{
    d = new Date(d * 1000);
    return d.getMonth() + 1 + '/' + d.getDate() + '/' + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();

}
于 2013-03-20T11:26:29.247 回答
0

Javascript 已经知道如何使用时间戳。

var d = new Date(timestamp * 1000); //will create a date object

然后,您可以使用所有 Javascript Date 方法对其进行格式化。( http://www.w3schools.com/jsref/jsref_obj_date.asp )

编辑:将时间戳转换为毫秒(* 1000)

于 2013-03-20T11:24:01.860 回答