2013-03-20 16 views
2

我從數據庫獲取的值是時間戳。並且需要將其轉換爲mm/dd/yyyy H:i:s使用javascript。我試了下面的代碼。但它不工作它的Firefox/ie.But其工作在鉻..如何解決它。如何將mysql時間戳格式化爲mm/dd/yyyy H:我在s中輸入javascript

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; 
} 

我得到的NaN/NaN的/ NaN的/ NaN的/的NaN/NaN的Firefox和ie.Any幫助深表感謝

+0

下面是格式化MySQL日期的一個非常簡短的方法http://stackoverflow.com/a/3075893/2047369 – Mike 2013-12-02 09:18:01

回答

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'); 
}; 

很多更輕鬆!

+0

不,它沒有在Firefox中工作 – 2013-03-20 11:31:38

+0

問題是,如果你的時間戳是'2013-03-14 06 :32:33',Firefox無法解析:它只會解析[IETF兼容的RFC2822時間戳](http://tools.ietf.org/html/rfc2822#page-14)。一個快速的解決方案是將破折號改爲斜槓:'var d = new Date(value.replace(/ -/g,'/')),',假設解析到函數的值將始終採用相同的格式。 – Xophmeister 2013-03-20 11:37:02

+0

完成了這項工作.. – 2013-03-20 11:40:30

0

的Javascript已經知道如何使用時間戳工作。

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

然後,您可以使用所有的Javascript日期方法來設置它的格式。 (http://www.w3schools.com/jsref/jsref_obj_date.asp

編輯:轉換時間戳毫秒(* 1000)

+0

沒有工作的花花公子 – 2013-03-20 11:25:44

+0

@Deepu顯示您的時間戳值? – 999k 2013-03-20 11:27:31

+0

2013-03-14 06:32:33多數民衆贊成時間戳值 – 2013-03-20 11:28:46

1
function formatDate(d) 
{ 
    d = new Date(d * 1000); 
    return d.getMonth() + 1 + '/' + d.getDate() + '/' + d.getFullYear() + " " + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds(); 

} 
相關問題