2013-07-15 36 views
2

我在找到解決方案時只能從我的json時間戳獲取日期和月份時遇到問題。我的JSON的樣子:從時間戳得到日期和月份

{ 
"status": "ok", 
"posts": [ 
{ 
    "id": "21", 
    "title": "Title", 
    "date": "1374267600" 
} 
] 
} 

和Ajax調用:

$.ajax({ 
    url: , 
    async: false, 
    callback: 'callback', 
    crossDomain: true, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'jsonp', 
    timeout: 2000, 
    success: function (data, status) { 


     if (data !== undefined && data.posts !== undefined) { 

     $('#dates').append('<div id="date">' + item.date + '</div><div id="month">' + item.date + '</div>'); 
     }  
    } 
}); 

它只顯示印章。你能幫我嗎?

此外,如果你可以做到這一點在jsfiddle我真的很感激它!

+0

'item'從哪裏來? – Pieter

+0

對不起彼得你是對的。有**項**的錯誤,即使我修好了 - 它不會正確顯示我的郵票 – qqruza

回答

5

您需要將時間戳轉換到一個約會對象。 請注意,您有因爲JavaScript日期構造函數採用毫秒,而時間戳是在幾秒鐘內

months = ["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"]; 
timestamp = "1374267600"; 
var jsDate = new Date(timestamp*1000); 

$('#dates').append('<div id="date">' + jsDate.toDateString() + '</div>'+ 
'<div id="month">' + months[jsDate.getMonth()] + '</div>'); 

Fiddle

+0

它正在與1000乘以1000倍,當我乘以1000它顯示後3天的日期。 –

0

該日期實際上是自1月1日凌晨零點以後的毫秒。 1970年,如果你使用

您可以轉換毫秒字符串的日期對象在JavaScript中使用:

var d = new Date(item.date); 

然後你可以使用d.toUTCString()獲得UTC格式的日期。

2

下面的函數將其改造成DDMMYY格式:

function unixEpochTime_TO_Date_DDMMYY (unixEpochTime, returnUTC) { 
    var year, month, day; 
    var dateObj = new Date (unixEpochTime * 1000); 

    if (returnUTC) { 
     year = dateObj.getUTCFullYear(); 
     month = dateObj.getUTCMonth(); 
     day  = dateObj.getUTCDate(); 
    } 
    else { 
     year = dateObj.getFullYear(); 
     month = dateObj.getMonth(); 
     day  = dateObj.getDate(); 
    } 

    //-- Month starts with 0, not 1. Compensate. 
    month  += 1; 

    /*-- Since we want DDMMYY, we need to trim the year and zero-pad 
     the day and month. 
     Note: Use YYMMDD, for sorting that makes sense. 
    */ 
    year = ("" + year) .slice (-2); 
    month = ("0" + month).slice (-2); 
    day  = ("0" + day) .slice (-2); 

    return day + month + year; 
} 

實用程序:

var obj = { 
    "status": "ok", 
    "posts": [ 
     { 
       "id": "21", 
       "title": "Title", 
       "date": "1374267600" 
     } 
    ] 
}; 

alert(unixEpochTime_TO_Date_DDMMYY(obj.posts[0].date, " Local")); 

JSFIDDLE

+0

謝謝John。你能幫我在單獨的div中顯示日期和月份嗎? – qqruza

0
var date = Date.parse(item.date); 
var month = date.getMonth(); 
var day = date.getDay(); 
var year = date.getYear(); 
1

item.date是一個字符串,以及JavaScript的Date()接受數字,所以:

var ms = parseInt(item.posts[0].date, 10) * 1000, 
    date = new Date(ms), 
    day = date.getDate(), 
    month = date.getMonth() + 1, 
    elem1 = $('<div />', {id : 'date', text : day}), 
    elem2 = $('<div />', {id : 'month', text : month}); 

$('#dates').append(elem1, elem2); 

FIDDLE

2

這裏繁衍時間戳和1000是一個功能我寫了這一點,會給你你需要的所有參數甚至更多。

/* 
* This function get all date from timestamp 
*/ 
function dataFromTimestamp(timestamp){ 
    var d = new Date(timestamp); 

    // Time 
    var h = addZero(d.getHours());    //hours 
    var m = addZero(d.getMinutes());   //minutes 
    var s = addZero(d.getSeconds());   //seconds 

    // Date 
    var da = d.getDate();      //day 
    var mon = d.getMonth() + 1;     //month 
    var yr = d.getFullYear();     //year 
    var dw = d.getDay();      //day in week 

    // Readable feilds 
    months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]; 
    var monName = months[d.getMonth()];   //month Name 
    var time = h + ":" + m + ":" + s;   //full time show 
    var thisDay = da + "/" + mon + "/" + yr; //full date show 

    var dateTime = { 
     seconds : s, 
     minutes : m, 
     hours : h, 
     dayInMonth : da, 
     month : mon, 
     year : yr, 
     dayInTheWeek : dw, 
     monthName : monName, 
     fullTime : time, 
     fullDate : thisDay 
    }; 
    return dateTime; 

    function addZero(i) { 
     if (i < 10) { 
      i = "0" + i; 
     } 
     return i; 
    } 
} 

https://jsfiddle.net/mkammdgz/

+1

謝謝@ofir_aghai – qqruza

0
var dt = new Date(); 
    var time = dt.getMonth()+1 +""+ dt.getDate()+ "" +dt.getFullYear() +""+ dt.getHours() +""+ dt.getMinutes() +""+ dt.getSeconds(); 

    console.log(time); 
0

我知道已經晚了,但我面對這個問題,我爲它找到一個解決方案。

嘗試,而不是使用moment()從時間戳轉換爲實際日期

要獲得完整的日期,使用moment(Timestamp).format('MM/DD/YYYY')

要獲取月份名稱,使用moment(Timestamp).format('MMMM')

在你的代碼的情況下,請嘗試以下:

$('#dates').append('<div id="date">' + 
    moment(item.date).format('MM/DD/YYYY') + 
    '</div><div id="month">' + 
    moment(item.date).format('MMMM') + 
    '</div>'); 
相關問題