j'ai remarqué Dites que j'ai cette p> date.parse code> ne peut pas gérer que 2 dates de 2 chiffres.
mm/dd/yy = 7/11/20
4 Réponses :
Pas que je sache. Mais vous pouvez toujours ajuster l'année: Ce code en action. A > p> Ce code en action. p> p>
Qu'est-ce que c'est ça? Je suis un peu confus avec 1 $ également que l'utilisateur pourrait toujours donner une date complète. Alors cela échoue. Alors, comment pourrait-il être modifié?
Le problème avec cette approche est si ils tapent, disent, 7/11/98, la date sera le 7/11/2098, ce qui n'est probablement pas ce qu'ils signifiaient, à moins que les dates qu'elles entrant sont toujours censées être dans le avenir dans votre situation particulière. Il doit y avoir une coupure quelque part pour des dates à deux chiffres pour travailler ... où la coupure est arbitraire, mais quelque part environ 50 pourrait avoir un sens ... mais vraiment, ne pas accepter des dates à deux chiffres du tout serait la meilleure idée que je pense. :)
@ chobo2 - Le 1 $ code> insère la valeur trouvée dans la RegEx (la partie
(\ d \ d) code>, qui est à deux chiffres).
@ chobo2 - il n'y a pas de défaut. \ / (\ d \ d) code> essaie de correspondre à "code> / dd code>, où
d code> est un chiffre. S'il y a une correspondance, il remplacera la correspondance avec
/ 20dd code>, si ce n'est le cas avec par exemple
/ 2015 code>, il n'y aura pas de remplacement.
Donc, votre question est de savoir si vous pouvez changer la façon dont la date.parse fonctionne de sorte que les dates à deux chiffres à faible nombre soient interprétées comme dates après l'an 2000?
Oui, cela peut être fait, Simply Shadow Day.parse avec votre propre fonction d'analyse. P>
// don't do this! Date.parse = function (str) { /* your parse routine here */ }
Juste pour faire respecter: c'est très très dangereux !!
On dirait-il? ou cette version qui testera d'abord un format de Yyyy. P> var date = '7/11/2020';
var idx = date.lastIndexOf('/') + 1;
if(date.substr(idx).length < 4) {
date = date.substr(0,idx) + '20' + date.substr(idx);
}
var result = Date.parse(date);
alert(new Date(result))â;â
@Brunolm - Je pense que l'hypothèse est que le format YY sera toujours utilisé. Assez facile pour ajouter un test pour un format de Yyyy.
Eh bien, un utilisateur pourrait taper chez Yy ou Yyyy. Je ne suis pas sûr de Yyy, je ne sais pas si cela fonctionne. Je sais que les 2 premiers C # peuvent figurer et analyser et donc sathayskicker.
Voici ma solution:
function parseDate(stringValue) { var date = new Date(stringValue); if (!isNaN(date.getTime())) { // if they typed the year in full then the parsed date will have the correct year, // if they only typed 2 digits, add 100 years to it so that it gets translated to this century if (stringValue.indexOf(date.getFullYear()) == -1) { date.setFullYear(date.getFullYear() + 100); } return date; } else { return null; } }
La meilleure solution serait de fournir la date totale, toujours.
@Burnolm Je suis d'accord C'est pourquoi j'ai une popup salepicker lorsque la zone de texte est cliquée, mais un utilisateur peut toujours pour une raison pour une raison manuellement de ce que j'ai fait "7/11/20" pour une raison quelconque. Il n'exploite aucun de mon code C # car il figure qu'il est de 2020 mais il vise certaines de mes listes de liste déroulante qui sont filtrées en fonction de la date. Donc, si je peux résoudre ce problème, je voudrais aussi aussi pour une raison quelconque JQuery Validate "Date" ne pense pas que c'est une erreur de validation et est dans un format valide.