Javascript: obtenir le lundi et le dimanche de la semaine précédente
J'utilise le script suivant pour obtenir le lundi (le premier) et le dimanche (le dernier) de la semaine précédente:
var curr = new Date; //get current date
var first = curr.getDate() - curr.getDay() - 6; //Gets day of the month (e.g. 21) - the day of the week (e.g. wednesday = 3) = Sunday (18th) - 6
var last = first + 6; //last day is the first day + 6
var startDate = new Date(curr.setDate(first));
var endDate = new Date(curr.setDate(last));
Cela fonctionne bien si le lundi et le dimanche étaient aussi dans le même mois, mais je viens de remarquer aujourd'hui que cela ne fonctionne pas si, aujourd'hui, décembre et lundi dernier, c'était au mois de novembre.
Je suis un total JS novice, est-il une autre façon d'obtenir ces dates?
OriginalL'auteur user18577 | 2012-12-03
Vous devez vous connecter pour publier un commentaire.
si vous ne voulez pas le faire avec une bibliothèque externe, vous devez travailler avec des horodatages. j'ai créé une solution où vous soustraire 60*60*24*7*1000 (qui est 604800000, qui est de 1 semaine en millisecondes) à partir de la Date actuelle et aller à partir de là:
Ne fonctionne pas dans les pays qui utilisent l'heure d'été, parce que une semaine n'est pas toujours 60*60*24*7*1000ms. Par exemple, au 2014-03-31 00:30:00 en France, lastMonday serait 2014-03-17 même si le 24 Mars et le 31 Mars, sont les lundis.
OriginalL'auteur hereandnow78
Vous pouvez obtenir le lundi précédent, en obtenant le lundi de cette semaine, et en soustrayant de 7 jours. Le dimanche sera un jour avant, donc:
Pour 2012-12-03-je obtenir:
Est que ce que vous voulez?
qui donne
En général, vous pouvez manipuler les objets date par ajouter et soustraire des années, des mois et des jours. L'objet de gérer les valeurs négatives automatiquement, par exemple,
Va créer une date pour 2012-11-30 (en notant que les mois sont de zéro, de sorte 11 décembre). Aussi:
Ok, donc au lieu de soustraire de 1 jour pour le dimanche, ajouter 6.
OriginalL'auteur RobG
Vous pouvez utiliser une bibliothèque comme moment.js.
Voir la
subtract
méthode http://momentjs.com/docs/#/manipulating/subtract/moment().jour(-6) pour obtenir les dernières lundi et le moment().jour(1) pour obtenir de dimanche dernier (où lundi est le premier jour de la semaine et le dimanche est le dernier moment sinon().jour(-7) pour obtenir les dernières dimanche)
OriginalL'auteur Toni Toni Chopper
Quelques réponses mentionnées moment, mais personne n'a écrit à propos de cette méthode simple:
.day
ensembles un jour de semaine, donc il n'a pas d'importance quel jour est-ce aujourd'hui, seulement la semaine questions de.non, il sera toujours le dimanche, sauf si elle est locale à charge, je n'arrive pas à se rappeler. Mais ça ne dépend pas de date en cours, vous pouvez tester vous-même.
C'est tellement plus facile, l'amour.
OriginalL'auteur Alex Lapa
À l'aide de Moment, vous pouvez effectuer les opérations suivantes
OriginalL'auteur Alfredo Perez
Ici vous avez un multi-objectif de la fonction:
Vous pouvez trouver le "clone(obj)" fonction dans le prochain post: https://stackoverflow.com/a/728694/6751764
OriginalL'auteur urpi5
il peut être si simple.
OriginalL'auteur friendly