J'ai un var Comment puis-je obtenir le "lendemain" de la chaîne exemple fort>? p>
J'ai essayé d'utiliser l'objet de date ... mais rien ... P>
8 Réponses :
Vous pouvez utiliser le cadre appelé php.js. Google pour cela. Cela inclut les fonctions de date avancée et plus p>
C'est assez simple à faire avec JS natif, je n'irais pas directement à un autre "cadre".
Cela le ferait pour des scénarios simples comme celui que vous avez: essentiellement, nous créons un objet de date et définissez l'année, le mois et la date avec le Si vous avez besoin de quelque chose de plus compliqué que cela, comme un support pour différents formats et des trucs comme ça, vous devez jeter un coup d'œil sur le SURCULLY () CODE> fonction. Nous attrapons ensuite l'horodatage de cette date à l'aide de GetTime () Code> et ajoutez 1 jour (86400000 millisecondes) et remettez-le à la date à l'aide de Setttime () code> fonction. p>
Y a-t-il une année de saut / second problème avec l'utilisation de date.setdate (date.getdate () + 1); code>?
Votre code est-il disponible avec la date d'exemple dans le format DD-MM-AAAAYY ou MM-DD-AAAAYY? Je pense que c'est au format MM-DD-AAAA, mais je veux aussi confirmer avec vous.
new Date(+new Date('05-10-1983'.replace(/-/g,'/')) + 24*60*60*1000)
Le problème de l'approche +86400000 est le potentiel d'erreur lors de la traversée d'une barrière de temps d'épargne à la lumière du jour. Par exemple, je suis sur l'Est. Si je fais cela:
function getTomorrow(d,offset) {
if (!offset) { offset = 1 }
return new Date(new Date().setDate(d.getDate() + offset));
}
Votre solution retiendrait au début du mois si D + Décalage B> Croix des frontières mensuelles, mais date () + décalage b> ne le fait pas. Vous devez ancrer la nouvelle date de base à laquelle vous ajoutez des jours à votre date d'origine. Donc, au lieu de: nouvelle date (nouvelle date (). SetDate (d.getDate () + offset)); code> Il devrait être: nouvelle date (nouvelle date (D.GETTime ()) .SetDate (d.getDate () + offset)); Code> Sinon, vous faites l'arithmétique avec la relation avec le mois de la date actuelle () + décalage, pas la date D indiquée dans l'argument de fonction + décalage.
SO
function next_day(date) {
var e = new Date(date.getTime() + 24 * 60 * 60 * 1000);
if e.getHours() != date.getHours() {
e = new Date(e.getTime() + (e.getHours() - date.getHours()) * 60 * 60 * 1000)
}
return e;
}
Je ne l'ai pas testé, mais c'est une solution intéressante pour le problème de DST que je n'avais pas pensé. Je ne peux pas penser à d'autres scénarios où cela ne fonctionnera pas.
Vous pouvez effectuer ce qui suit: après la course ci-dessus est exécuté, #gedate code> / #seddate code> obtient / définit le jour actuel du mois (1 -31). P> lenadiday code> sera défini sur la date de la demain. Cela va également renvoyer au mois prochain / année si c'est la fin du mois et même gérer les années de bonds. :) p> p>
Vous pouvez trouver un index de jour par GetDay () CODE> Fonction et créer une matrice de chaînes de jours à la mode suivante- day = new Date(YourDate);
var dayArray = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
day = dayArray[day.getDay()+1];
Il y a des secondes sautées, des jours de saut, un dst, etc., cela peut donc être un problème difficile à résoudre dans tous les cas.
À mon avis, le meilleur moyen de résoudre ce problème (sans date de la bibliothèque de date) est de Profitez de la fonction de débordement du constructeur de date [1]: p> [1] https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_Objects / Date # Paramètres P> liens h2>
La chaîne va-t-elle toujours être au format MM-DD-AAAA?