2013-08-01 50 views
1

我有一個很好的功能,用於從json格式返回的web服務轉換日期。 web服務給出了以下類型格式的日期:從數據和時間丟失的導致0

數據例如:的日期是這樣的JSON數據

\/Date(1373875200000)\/ 

電流功能:這是當前功能我有

function HumanDate(date) { 

    var jsondateString = date.substr(6); 
    var current = new Date(parseInt(jsondateString)); 
    var month = current.getMonth() + 1; 
    var day = current.getDate(); 
    var year = current.getFullYear(); 
    var hour = current.getHours(); 
    var minute = current.getMinutes(); 
    var datetime = day + "/" + month + "/" + year + " " + hour + ":" + minute 

    return datetime; 

} 

用法:這是我如何使用上面

功能
success: function(data) { 

    if (data.d[0]) { 
     $.each(data.d, function(index, data) { 

      $("body").append(HumanDate(data.from) + '<br />'); 

     }); 
    } else { 

電流輸出:這是輸出我目前得到的,注意到丟失0的

2/7/2013 9:0 
15/7/2013 9:30 
15/10/2013 10:0 
15/11/2013 10:30 

預期輸出:這是我想的輸出,注意額外的0

02/07/2013 09:00 
15/07/2013 09:30 
15/10/2013 10:00 
15/11/2013 10:30 

問題:

如何獲取格式化爲期望輸出示例的日期和時間?

+0

http://stackoverflow.com/questions/1267283/how-can-i-create-a-zerofilled-value-using-javascript – Crontab

+0

有沒有代碼可以添加前導零 - 我看不出那麼你可以期待他們。:P – Esailija

+0

@Esailija很多語言都提供了自定義日期輸出格式的方法,所以我假定提問者想知道在JavaScript中是否有類似的東西。 (不幸的是沒有) – sgroves

回答

2

我建議使用庫這種事情 - 像Moment.js會做很好的工作(並給你一個負載更像日期加/減成功能討價還價)。

隨着moment.js,你的代碼看起來是這樣的:

function HumanDate(date) { 
    return moment(date).format('MM/DD/YYYY HH:mm'); 
} 

使用示例:

alert(HumanDate("\/Date(1373875200000)\/")); 
//alerts "07/15/2013 09:00" 

希望有所幫助。

+0

X的目的是什麼? – oshirowanen

+0

很棒的回答。但是,如果您取下'X'格式器,Moment.js將接受他提供的原始字符串。請參閱[這些文檔](http://momentjs.com/docs/#/parsing/asp-net-json-date/)。 –

+1

@MattJohnson - 酷,我已經從答案中刪除了'X'。我不知道它有一個特定的ASP格式。 ('X'在那裏強制它接受日期作爲時間戳;文檔說最好指定格式以避免跨瀏覽器問題) – Spudley

4

如果你不使用庫,那麼你必須做一些工作,那就是你必須自己把"0"

而不是簡單地串聯day,你需要連接

(day<10 ? '0'+day : day) 

,並同其他字段。

但請注意,有很好的JavaScript庫填補這種差距。我個人使用datejs進行日期操作。

+1

好的。非常類似於Mozilla的Date JavaScript參考中使用的方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#Example.3A_ISO_8601_formatted_dates – itorres

+1

這很好,但有關datejs,請認識到它[已被放棄](http://stackoverflow.com/tags/datejs/info)。 –

+0

@MattJohnson很好的觀察。雖然它對我使用它的項目仍然很好,但我會停止推薦它。 –

1

您也可以嘗試moment.js。用於格式化6.5kb庫日期

var m = moment(new Date()); 
m.format("DD/MM/YYYY HH:mm"); 
相關問題