2017-07-14 1 views
-1

J'ai actuellement le code suivant:date nouvelle date ne fonctionne pas dans IE

lastLoginDate = "\/Date(1499994230140+0800)\/"; 
lastLoginDate = moment(lastLoginDate).format("YYYY-MM-DD hh:mm:ss UTC"); 
lastLoginDate = new Date(lastLoginDate); 

Cela fonctionne en chrome. Cependant, lorsqu'elle est exécutée dans IE, la nouvelle date renvoie une date non valide. comment puis-je atteindre la même sortie dans IE?

+0

Vous devez le format 'Mar 5 décembre 16h47: 20 CDT 2006' - [_IE JavaScript erreur d'analyse de date_] (https://stackoverflow.com/questions/3020508/ie-javascript-date-parsing-error) –

+1

Que diable est "" \/Date (1499994230140 + 0800) \/"'? Comment vous êtes-vous retrouvé avec ça? – str

+0

Son étant retourné par l'API – edsamiracle

Répondre

1

résolu mon problème en changeant le format de aaaa/mm/jj au lieu aaaa-mm-jj

moment(lastLoginDate).format("YYYY/MM/DD hh:mm:ss UTC"); 
+0

Merci, ça m'a aidé –

0

Il n'est pas du tout nécessaire de formater puis d'analyser à nouveau la date. Il suffit d'utiliser toDate():

lastLoginDate = moment(lastLoginDate).toDate(); 

Si cela ne fonctionne pas, votre lastLoginDate a un mauvais format. Vous pouvez en savoir plus sur les formats valides here.

0

Vous pouvez fractionner la chaîne dans l'heure Unix et le décalage de fuseau horaire à l'aide d'une expression régulière.

Ce code ci-dessous est facile à suivre.

const dateRegex = /^\/Date\((\d+)([-+]\d{4})\)\/$/; 
 
const dateFormat = 'YYYY-MM-DD hh:mm:ss Z'; 
 
    
 
let lastLoginDate = "\/Date(1499994230140+0800)\/"; 
 
console.log(parseTimestamp(lastLoginDate)); 
 

 
function parseTimestamp(timestamp) { 
 
    var groups = dateRegex.exec(timestamp); 
 
    var unixTime = Math.floor(parseInt(groups[1], 10)/1000); 
 
    var timezoneOffset = groups[2]; 
 

 
    return moment.unix(unixTime).utcOffset(timezoneOffset).format(dateFormat); 
 
} 
 

 
// Output: 2017-07-14 09:03:50 +08:00
.as-console-wrapper { top: 0; max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

Vous pouvez modifier les déclarations d'instruction 'let' et' const' en 'var' si cela ne fonctionne pas dans IE. –