2010-07-09 4 views

Répondre

1

Date.parse doit réellement analyser la majeure partie de la chaîne de date dans son horodatage respectif.

Les 2 mises en garde semblent être:

  • Millisecondes sont pas pris en charge, ils doivent être séparés et a ajouté après l'analyse syntaxique.
  • Il prendra l'heure locale, donc 'GMT' ou 'UTC' devrait être ajouté avant l'analyse.

Avec cela à l'esprit, ce qui suit devrait fonctionner:

function parseSoapDate(dateString) { 
    var dateParts = dateString.split('.'), 
     dateParse = dateParts[0], 
     dateMilli = dateParts[1]; 

    return new Date(
    Date.parse(dateParse + ' GMT') + 
    parseInt(dateMilli, 10) 
); 
} 

var date = parseSoapDate('2010/07/08 04:21:24.477'); 

Quant à UTC à l'heure locale, les objets Date de JavaScript doit déjà gérer pour vous, car ils peuvent indiquer la date à la fois UTC et la le fuseau horaire local de l'utilisateur. Vous spécifiez que vous voulez par le nom de la méthode (si elle a UTC dans ou non):

alert(date.toString());  // local time 
alert(date.toUTCString()); // UTC time 
0

Cela devrait fonctionner:

var dateStr = "2010/07/08 04:21:24.477"; 
var d = new Date(dateStr.split('.')[0]); 
d.setUTCHours(0); 
+0

"2010/07/08 04: 21: 24,477" est pas une date valide format. – Anax

+0

Fixé. A fonctionné sur Chrome au moins. –

-1

Il semble que la réponse de la date/heure est au format ISO, ce qui est un moyen raisonnable de fournir des informations sur la date.

Supposons que la date renvoyée est 7-8-2010. Est-ce que ce serait le 8 juillet ou le 7 août? Avoir la date au format ISO (AAAA/MM/JJ) résout cette ambiguïté.

Vous pouvez convertir cette date au format requis de différentes façons, par exemple

var input = '2010/07/08 04:21:24.477'; 
var now = new Date(input.slice(0, input.indexOf('.'))); 
alert(now.toLocaleString()); 

Vous pouvez rechercher l'Internet pour l'objet Date ou pour trouver des extraits qui vous permettront de convertir une date à l'aide beaucoup de différents formats.

+0

En fait non, la date n'est pas au format ISO, qui serait '2010-07-08T04: 21: 24.477' selon http://www.iso.org/iso/date_and_time_format –

0

mes déclarations JSON: AAAA-MM-JJ HH: MM: SS, la localisation ne fonctionnera que sur les navigateurs sélectionnés Date.prototype.toLocaleDataString("en-us"[,option])

function stringToDate(s) { 
     var language = window.navigator.userLanguage || window.navigator.language; 
     var options = {year: "numeric", month: "numeric", day: "numeric"};   
     s = s.split(/[-: ]/);   
     d = new Date(Date.UTC(s[0], s[1]-1, s[2], s[3], s[4], s[5])); 
     return d.toLocaleDateString(language , options)+" "+d.toLocaleTimeString(); 
    } 
// return 
// Friday, November 15, 2013 2:21:04 PM --> FF25 
// 11/15/2013 2:21:04 PM     --> Chrome31 
Questions connexes