Analyser la chaîne DateTime en JavaScript


Réponses:


140

Voir:

Code:

var strDate = "03.09.1979";
var dateParts = strDate.split(".");

var date = new Date(dateParts[2], (dateParts[1] - 1), dateParts[0]);

mmm, mais comment vérifier que strDate a une valeur invalide comme "30.30.2000"?
— Dr. No

2
@ user674887, vous pouvez comparer les valeurs après analyse. par exemple dateParts [1] -1 == date.getMonth ()
— Jonathan Fingland

Si vous avez une date à la fois TIME comme ceci: "2014-05-20T16: 43: 56.71-06: 00" var partesFecha = solicitud.CreatedDate.split ("T") [0] .split ("-"); var createdDate = nouvelle date (partesFecha [0], (partesFecha [1] - 1), partesFecha [2]); Date du premier extrait avant T et plus tard, année, mois et jour.
— RolandoCC

Je ne peux pas croire que vous deviez utiliser un fractionnement pour obtenir le format de date attendu en javascript
— Claudiu Creanga

Quelqu'un d'autre trouve-t-il étrange que l'article de référence de Mozilla sur l'objet Date lui-même dise "Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies."?
— NanoWizard

51

Si vous utilisez jQuery UI, vous pouvez formater n'importe quelle date avec:

<html>
    <body>
        Your date formated: <span id="date1"></span><br/>
    </body>
</html>

 

var myDate = '30.11.2011';
var parsedDate = $.datepicker.parseDate('dd.mm.yy', myDate);

$('#date1').text($.datepicker.formatDate('M d, yy', parsedDate));

http://jsfiddle.net/mescalito2345/ND2Qg/14/


21
+1 Je ne vois pas totalement hors de portée, JavaScript et JQuery sont une combinaison courante.
— djna le

Une réponse ne doit pas s'appuyer sur une bibliothèque qui n'est ni balisée ni mentionnée dans l'OP. Utiliser jQuery comme bibliothèque de dates est excessif lorsqu'une fonction à 3 lignes peut faire le même travail.
— RobG

9

Nous utilisons ce code pour vérifier si la chaîne est une date valide

var dt = new Date(txtDate.value)
if (isNaN(dt))

le format donné ne correspond pas au format requis par developer.mozilla.org/en/Core_JavaScript_1.5_Reference/... (et donc ce constructeur Date ne suffira pas)
— Jonathan Fingland

Cela ne teste pas du tout les dates valides, cela teste simplement si le constructeur Date peut créer une date valide à partir de l'entrée. Les deux ne sont pas la même chose.
— RobG

6

réfs: http://momentjs.com/docs/#/parsing/string/

Si vous utilisez moment.js, vous pouvez utiliser le mode "string" + "format"

moment(String, String);
moment(String, String, String);
moment(String, String, Boolean);
moment(String, String, String, Boolean);

ex:

moment("12-25-1995", "MM-DD-YYYY");

2
Dans la plupart des cas, MomentJS est exagéré, car l'utilisation de JavaScript pur ne nécessite que des centaines d'octets, tandis que MomentJS est gzippé à 12,4 Ko. Pratique pour les développeurs mais ralentit le site Web. Ça ne vaut pas.
— Raptor

3

J'ai été utilisé en suivant le code dans IE. (Compatible IE8)

var dString = "2013.2.4";
var myDate = new Date( dString.replace(/(\d+)\.(\d+)\.(\d+)/,"$2/$3/$1") );
alert( "my date:"+ myDate );


2

Utiliser l'objet Date:

var time = Date.parse('02.02.1999');
document.writeln(time);

Donner: 917902800000


16
new Date(Date.parse('02.02.1999'))
— Duke

+1 For Duke commentaires sur new Date(Date.parse('02.02.1999'))pour Javascript
— Jack

Renvoie NaN dans au moins deux navigateurs actuels. Voir Pourquoi Date.parse donne-t-il des résultats incorrects?
— RobG

@ Duke— new Date(Date.parse('02.02.1999'))produira des résultats identiques à new Date('02.02.1999'), y compris la date invalide dans certains navigateurs. L'utilisation de l'analyseur intégré est sans doute la pire façon d'analyser un horodatage.
— RobG

2

Cette fonction gère également la date 29.2.2001 invalide.

function parseDate(str) {
    var dateParts = str.split(".");
    if (dateParts.length != 3)
        return null;
    var year = dateParts[2];
    var month = dateParts[1];
    var day = dateParts[0];

    if (isNaN(day) || isNaN(month) || isNaN(year))
        return null;

    var result = new Date(year, (month - 1), day);
    if (result == null)
        return null;
    if (result.getDate() != day)
        return null;
    if (result.getMonth() != (month - 1))
        return null;
    if (result.getFullYear() != year)
        return null;

    return result;
}

0

vous pouvez formater la date en faisant simplement ce type de code. En javascript.

 // for eg.
              var inputdate=document.getElementById("getdate").value);
                 var datecomp= inputdate.split('.');

                Var Date= new Date(datecomp[2], datecomp[1]-1, datecomp[0]); 
                 //new date( Year,Month,Date)

Vous êtes censé utiliser javascript et non jquery car il n'y a pas de balise jquery
— Sagar

heureux ... le sens est de simplement comprendre le senario
— Bachas

Bien. Je ne pense pas que votre exemple soit différent de celui donné par Martin Staufcik. En fait, sa réponse a une logique supplémentaire pour gérer les dates invalides.
— Sagar le

Martin Staufcik gère ces conditions qui ne se produisent généralement pas. pouvez-vous me donner un calendrier qui peut donner des invalides.Pourquoi nous devrions écrire un code si long lorsque nous pouvons gérer à court terme. Ce serait beaucoup mieux si Martin Staufcik donne également pour gérer la date avec l'heure à gérer.
— Bachas
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.