2016-06-22 64 views
0

我正在使用node.js和ejs。我有數據響應像日期在另一個國家/地區顯示一天?

[{"message":"","fileSize":"2132","id":"4225","readBy":"2016-03-01 09:04:50","userID":"23","dateTime" 
:"2016-03-01 09:03:57","fileName":"movie.mov","fileTicketID":"e0219f64-fb43-4302-8ec3-848a98545048"} 
,{"message":"","fileSize":"64132","id":"4226","readBy":"2016-03-01 09:04:50","userID":"23","dateTime" 
:"2016-03-01 09:04:20","fileName":"spanish.rtf","fileTicketID":"905f9905-c406-4514-9410-0443c4baa570" 
},{"message":"","fileSize":"93430","id":"4227","readBy":"2016-03-01 10:21:07","userID":"23","dateTime" 
:"2016-03-01 09:06:08","fileName":"IP estatica.tiff","fileTicketID":"f9bd81a8-b022-4d53-94e7-8301d30ae5e3" 
},{"message":"","fileSize":"45","id":"4228","readBy":"2016-03-01 10:21:07","userID":"23","dateTime":"2016-03-01 
09:06:22","fileName":"Text File.txt","fileTicketID":"85a6adb6-15a9-4742-b7d2-05fcd3fa23c1"}] 

我需要顯示的數據日期組明智的。

我不喜歡下面

var map = {}; 

msg1.forEach(function(a){ 
    var key = a.dateTime.substring(0, 10); 
    map[key] = map[key] || []; 
    map[key].push(a); 
}); 

Object.keys(map).forEach(function(date){ 
    var dt = new Date(date), 
     monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
    var dateStr = dt.getDate() + " " + monthNames[dt.getMonth()] + ", " + dt.getFullYear(); 
    alert(dateStr); 
    var el1 = $('<span>' + dateStr + '</span>'); 
    $(".chat_window ul").append(el1); 
    map[date].forEach(function(item){ 
    //item is the each value in array 
    // alert(item.message); 

    var now = item.dateTime; 
    var jsDate = toJSDate(now); 

    //var dd = jsDate.toLocaleDateString() + " " + jsDate.toLocaleTimeString(); 
    var msgtime = jsDate.toLocaleTimeString(); 
    msgtime = msgtime.replace(/:\d+ /, ' '); 
    var el = $('<li class="message right appeared"><div class="avatar"><img src="' + url + 
     '/getUserImage/' + item.userID + '/60"/></div><div class="text_wrapper"><div class="text">' + 
     item.message + '</div><span>' + msgtime + '</span></div></li>'); 
}); 

在我結束所有的東西還行它的顯示日期以及在我結束。但在我的 客戶端,它顯示的是一天前的日期。正如你我已經有日期 作爲迴應,只需要以明智的方式格式化或分組數據。那麼爲什麼 它顯示有一天回來。這只是因爲javascript日期 函數?

+0

在DB如何存儲?一天回來? – Subburaj

+0

沒有像上面的迴應,你可以在數據庫中看到它的保存「2016-06-22 09:06:22」,當我改變它的格式,然後在我的結尾它的節目2016年6月22日,但在我的客戶端結束其節目20,他的cuntry是美國 –

+0

有沒有什麼辦法在我的系統中檢查另一個國家的代碼 –

回答

0

我認爲你需要店UTC時間在數據庫並提供數據給客戶端,您應該基於客戶的HTTP調用設置時區,並相應地返回時間/日期。

+0

事情是數據庫沒有保存在我的最後它保存在另一方,並得到它的響應。 –

+0

我有疑問,在這裏我有日期的迴應只需要格式化和數據像明智的日期組合。有沒有辦法使用另一種方法來格式化日期,並將josn數據分組到日期明智的日期 –

+0

當然,您可以使用您使用的任何編程語言更改日期(這需要在時區明智的情況下完成)。然後,您可以根據新日期對數據進行分組。 – abhinsit

0

您很可能遇到toLocaleTimeString的時區問題。

考慮使用moment.js timezone強制在X時區顯示日期或遵循@abhinsit建議將數據以UTC存儲在數據庫中,並根據用戶時區顯示。

編輯:與您的數據moment.js例如:https://jsfiddle.net/m959mkcr/

+0

你能告訴我如何使用moment.js與上述響應來更改日期格式 –

+0

有沒有任何方法來檢查我的系統中的另一個國家的代碼 –

+0

var date =「2016-06-22」; var Date1 = moment(日期,'YYYY-M-D'); var dateStr = Date1.format('MMMM D,YYYY');作爲日期值來自json的迴應是它如何向所有國家22? –

0

如果它涉及到的時區,我想知道。區別可能在於服務器的時區和客戶的時區之間。我會嘗試使用類似http://momentjs.com/timezone/的東西來處理時區,並在UTC時區中存儲服務器上的時間字段。

下面是如何將2016年6月22日晚上8點紐約時間轉換爲洛杉磯,歐洲倫敦時間的示例。

var newYork = moment.tz("2016-06-22 20:00", "America/New_York"); 
var losAngeles = newYork.clone().tz("America/Los_Angeles"); 
var london  = newYork.clone().tz("Europe/London"); 

newYork.format();  
losAngeles.format(); 
london.format();  
+0

你能告訴我如何使用moment.js與上述響應來更改日期格式 –

+0

是否有任何方法來檢查我的系統中的另一個國家的代碼 –

+0

var date =「2016-06-22」; var Date1 = moment(日期,'YYYY-M-D'); var dateStr = Date1.format('MMMM D,YYYY');作爲日期值來自json的迴應是它如何向所有國家22? –

相關問題