2016-06-22 4 views
0

Ich arbeite mit node.js und ejs. Ich habe Daten in Reaktion wieDatum zeigt einen Tag zurück in einem anderen Land?

[{"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"}] 

Ich brauche weise Gruppendaten Datum anzuzeigen.

Ich habe wie unter

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

alle Dinge in Ordnung in meinem Ende ist es zeigen Datum gut in meinem Ende. Aber in meinen Clients endet es das Datum einen Tag zurück. Da ich bereits Datum als Antwort habe nur Daten in Datum zu formatieren oder gruppieren müssen. Also warum es ist ein Tag zurück zeigt. Ist das nur wegen Javascript Datum Funktion?

+0

In DB wie seine Speicherung ?? einen Tag zurück? – Subburaj

+0

nein wie oben Antwort können Sie in db sehen es speichern "2016-06-22 09:06:22" und wenn ich es ändern das Format dann in meinem Ende seine Show 22. Juni 2016, aber in meinem Client-Ende seine Shows 20, Juni 2016. Seine Cuntry ist USA –

+0

gibt es eine Möglichkeit, Code mit einem anderen Land in meinem System zu überprüfen –

Antwort

0

Ich glaube, Sie brauchen, um Speicher UTC-Zeit in der Datenbank und für Daten-Client bietet Ihnen Zeitzone entsprechend basierend auf Client ‚s http Aufruf und Rückkehr Zeit/Datum einstellen sollte.

+0

die Sache ist Datenbank ist nicht gespeichert in meinem Ende ist es auf einer anderen Partei speichern und erhalten Antwort von ther. –

+0

ich habe Zweifel, ich habe Datum als Antwort nur müssen formatieren und gruppieren die Daten wie Datum. Gibt es eine Möglichkeit, das Datum mit einer anderen Methode zu formatieren und die josn Daten auf die Datumsseite zu gruppieren –

+0

Absolut, Sie können das Datum in welcher Programmiersprache auch immer ändern (dies muss zeitzonenweise geschehen). Dann können Sie die Daten basierend auf neuen Daten gruppieren. – abhinsit

0

Sie sind wahrscheinlich in Zeitzone Probleme mit toLocaleTimeString.

Verwenden Sie moment.js timezone, um zu erzwingen, dass das Datum in X-Zeitzone angezeigt wird ODER folgen Sie @abhinsit advice, um Daten in UTC in db zu speichern und entsprechend der Zeitzone des Benutzers anzuzeigen.

Edit: moment.js Beispiel mit Ihren Daten: https://jsfiddle.net/m959mkcr/

+0

können Sie mir sagen, wie kann ich moment.js mit der obigen Antwort verwenden, um das Datumsformat zu ändern –

+0

gibt es eine Möglichkeit, Code mit einem anderen Land in meinem System zu überprüfen –

+0

var date = "2016-06-22"; var Date1 = Moment (Datum, 'YYYY-M-D'); var dateStr = Date1.format ('MMMM D, YYYY'); Wie Datum Wert kommt von JSON Antwort ist wie 22 in alle Länder? –

0

Ich frage mich, ob es auf die Zeitzone in engen Zusammenhang steht. Der Unterschied kann zwischen der Zeitzone Ihres Servers und der Zeitzone Ihres Kunden liegen. Ich würde versuchen, etwas wie http://momentjs.com/timezone/ zu verwenden, um Zeitzonen zu behandeln, und das Zeitfeld auf dem Server in der UTC-Zeitzone gespeichert zu haben.

Hier ist ein Beispiel, wie Sie den 22. Juni 2016 um 20:00 Uhr New Yorker Zeit nach LA, Europe London umrechnen können.

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

können Sie mir sagen, wie kann ich moment.js mit der obigen Antwort verwenden, um das Datumsformat zu ändern –

+0

gibt es eine Möglichkeit, Code mit einem anderen Land in meinem System zu überprüfen –

+0

var date = "2016-06-22"; var Date1 = Moment (Datum, 'YYYY-M-D'); var dateStr = Date1.format ('MMMM D, YYYY'); Wie Datum Wert kommt von JSON Antwort ist wie 22 in alle Länder? –

Verwandte Themen