Quelqu'un connaît-il un moyen facile de prendre une date (par exemple aujourd'hui) et de remonter X jours en arrière?
Ainsi, par exemple, si je veux calculer la date 5 jours avant aujourd'hui.
javascript
date
datetime
jonhobbs
la source
la source
Réponses:
Essayez quelque chose comme ceci:
Notez que cela modifie l'objet date et renvoie la valeur d'heure de la date mise à jour.
la source
new Date(new Date().setDate(new Date().getDate()-5))
- ce sera il y a 5 jours. Dans l'exemple de la réponse, passez-le à une nouvelle date pour obtenir un objet date. C'estnew Date(d)
ce que tu veux.setDate(-1)
fixera la date au dernier jour du moistoString
méthodes telles quetoISOString
,toDateString
, etc.Si vous effectuez de nombreuses manipulations de dates complexes dans votre application Web, DateJS vous facilitera la vie:
http://simonwillison.net/2007/Dec/3/datejs/
la source
getTime()
etsetTime()
sont millisecondes depuis l'époque. Peu importe que le temps traverse une limite annuelle.Ca fait plutot comme ca:
la source
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
alors justevar daysAgo45 = getDaysAgo(45);
J'ai remarqué que les getDays + X ne fonctionnent pas au-delà des frontières jour / mois. L'utilisation de getTime fonctionne tant que votre date n'est pas antérieure à 1970.
la source
obtenir moment.js. Tous les enfants cool l'utilisent. Il a plus d'options de formatage, etc. Où
Optionnel! Convertir en obj JS Date pour reliure angulaire.
Optionnel! Format
la source
J'ai fait ce prototype pour Date afin que je puisse passer des valeurs négatives pour soustraire des jours et des valeurs positives pour ajouter des jours.
Donc, pour l'utiliser, je peux simplement écrire:
la source
d.setDate(d.getDate() + days)
des valeurs positives et négatives pour les jours pour ajouter et soustraire des jours respectivement. Et cela devrait fonctionner sur l'instance (comme le font les autres méthodes Date), pas créer et renvoyer une copie.Quelques-unes des solutions existantes étaient proches, mais pas exactement ce que je voulais. Cette fonction fonctionne avec des valeurs positives ou négatives et gère les cas limites.
la source
J'aime faire le calcul en millisecondes. Alors utilisez
Date.now()
et si vous l'aimez formaté
REMARQUE:
Date.now()
ne fonctionne pas dans les anciens navigateurs (par exemple IE8 je pense). Polyfill ici .MISE À JOUR juin 2015
@socketpair a souligné ma négligence. Comme il le dit, "un jour de l'année compte 23 heures et 25 en raison des règles de fuseau horaire".
Pour développer cela, la réponse ci-dessus aura des inexactitudes d'heure d'été dans le cas où vous souhaitez calculer le jour LOCAL il y a 5 jours dans un fuseau horaire avec des changements d'heure d'été et vous
Date.now()
l'heure locale actuelle est indiquée, ou.toString()
qui renvoie la date locale et est donc incompatible avec laDate.now()
date de base en UTC.Cependant, cela fonctionne si vous faites vos calculs en UTC, par exemple
A. Vous voulez la date UTC il y a 5 jours de MAINTENANT (UTC)
B. Vous commencez avec une date de base UTC autre que "maintenant", en utilisant
Date.UTC()
la source
Je trouve un problème avec la méthode getDate () / setDate (), car elle transforme trop facilement tout en millisecondes, et la syntaxe est parfois difficile à suivre pour moi.
Au lieu de cela, j'aime travailler sur le fait que 1 jour = 86 400 000 millisecondes.
Donc, pour votre question particulière:
Fonctionne comme un charme.
J'utilise cette méthode tout le temps pour faire des calculs glissants de 30/60/365 jours.
Vous pouvez facilement extrapoler cela pour créer des unités de temps pour des mois, des années, etc.
la source
divisez votre date en parties, puis renvoyez une nouvelle date avec les valeurs ajustées
N'oubliez pas que les mois sont basés sur zéro, mais pas les jours. c'est-à-dire nouvelle date (2009, 1, 1) == 01 février 2009, nouvelle date (2009, 1, 0) == 31 janvier 2009;
la source
Sans utiliser la deuxième variable, vous pouvez remplacer 7 pour votre dos x jours:
la source
la source
J'ai créé une fonction de manipulation de date. vous pouvez ajouter ou soustraire n'importe quel nombre de jours, heures, minutes.
Maintenant, appelez cette fonction en passant des paramètres. Par exemple, voici un appel de fonction pour obtenir la date avant 3 jours à compter d'aujourd'hui.
la source
la source
Les meilleures réponses ont conduit à un bug dans mon code où, le premier du mois, il fixait une date future dans le mois en cours. Voici ce que j'ai fait,
la source
Un moyen simple de gérer les dates est d'utiliser Moment.js
Vous pouvez utiliser
add
. ExempleDocs http://momentjs.com/docs/#/manipulating/add/
la source
J'aime ce qui suit car c'est une seule ligne. Pas parfait avec les changements d'heure d'été mais généralement assez bon pour mes besoins.
la source
pour moi, toutes les combinaisons ont bien fonctionné avec l'extrait de code ci-dessous, l'extrait de code est pour la mise en œuvre Angular-2, si vous devez ajouter des jours, passer un nombre positif de jours, si vous devez soustraire passer un nombre négatif de jours
la source
J'ai un bon kilométrage obsolète.
http://www.datejs.com/
Agréable!
Le site Web comprend cette beauté:
la source
Si vous souhaitez à la fois soustraire un nombre de jours et formater votre date dans un format lisible par l'homme, vous devriez envisager de créer un
DateHelper
objet personnalisé qui ressemble à ceci:(voir aussi ce violon )
la source
Voir le code suivant, soustrayez les jours de la date actuelle. Définissez également le mois en fonction de la date soustraite.
la source
Lors de la définition de la date, la date est convertie en millisecondes, vous devez donc la reconvertir en date:
Cette méthode prend également en compte le changement de nouvel an, etc.
la source
Vous pouvez utiliser Javascript.
Pour PHP,
J'espère que cela vous aidera.
la source
J'ai converti en millisecondes et les jours déduits sinon le mois et l'année ne changeront pas et logique
L'espoir aide
la source
la source
Utilisation de la syntaxe de la fonction JavaScript moderne
la source
Essayez quelque chose comme ça
currDate peut être n'importe quelle date
la limite pourrait être la différence de nombre de jours (positive pour l'avenir et négative pour le passé)
la source
Cela vous donnera un résultat des 10 derniers jours à 110% de travail, vous n'obtiendrez aucun type de problème
vous pouvez modifier les jours de soustraction selon vos besoins
la source
la source
la source