J'ai besoin d'aide pour générer des dates et des jours des sept à dix derniers jours par rapport à aujourd'hui. Comment un horodatage précis peut-il être créé pour prendre en charge le changement de semaine, de mois et d'année?génération des dates des sept derniers jours en php
Répondre
manière la plus simple serait d'obtenir un horodatage qui correspond à nos jours, en utilisant la time()
fonction ; et 7 fois supprimer 1 jour à cet horodatage, chaque écho à la date qui correspond à cet horodatage:
$timestamp = time();
for ($i = 0 ; $i < 7 ; $i++) {
echo date('Y-m-d', $timestamp) . '<br />';
$timestamp -= 24 * 3600;
}
qui vous obtiendrez cette sortie:
2010-02-25
2010-02-24
2010-02-23
2010-02-22
2010-02-21
2010-02-20
2010-02-19
Parce qu'un horodatage ne représente que le nombre de secondes depuis 1970-01-01
, soustraire un jour à un horodatage signifie soustraire 24*3600
secondes.
Modifier après les commentaires:
Pour les changements de mois et semaines, cela fonctionne toujours: un jour est encore 24 * 3600 secondes.
Par exemple, si vous testez en utilisant cette ligne au lieu de la première que j'ai posté dans mon premier exemple:
$timestamp = strtotime('2010-02-03');
Vous obtiendrez cette sortie:
Il a changé du mois bien.
Pendant des années bissextiles, si je test en utilisant ceci:
$timestamp = strtotime('2008-03-03');
Je reçois:
2008-03-03
2008-03-02
2008-03-01
2008-02-29
2008-02-28
2008-02-27
2008-02-26
Ce qui semble bien, car il y avait 29 jours en février 2008.
Et si je le test avec:
$timestamp = strtotime('2009-03-03');
je reçois:
2009-03-03
2009-03-02
2009-03-01
2009-02-28
2009-02-27
2009-02-26
2009-02-25
Ce qui a l'air bien aussi.
Utilisez strtotime()
for($i = 1; $i <= 10; $i++){
echo strtotime("-$i days"), PHP_EOL;
}
Voir aussi cette question connexe et réponses:
J'aime ce ... très latéral ... –
Pour générer l'horodatage de 00 heures pour les 10 derniers jours (y compris aujourd'hui) le code suivant fera:
<?php
for ($i=0; $i<=10; $i++) {
echo mktime (0, 0, 0, date('m'), date('d')-$i, date('Y'));
}
?>
Traitera-t-il le changement de mois et de semaine Et qu'en est-il de l'année bissextile? –
Tout ce dont vous avez besoin vous pouvez trouver dans this page of the php manual.
Si vous êtes assez chanceux pour pouvoir jouer avec PHP 5.3 (pourquoi pas?) Alors les classes DateTime/Interval/ seront aussi exceptionnellement utiles. L'exemple suivant imprime les dates des 7 derniers jours (avec aujourd'hui) par rapport à aujourd'hui.
$start = new DateTime('-7 days', new DateTimeZone('UTC'));
$period = new DatePeriod($start, new DateInterval('P1D'), 7);
foreach ($period as $date) {
var_dump($date->format('D d-m-Y'));
}
qui sort quelque chose comme:
string(14) "Thu 18-02-2010"
string(14) "Fri 19-02-2010"
string(14) "Sat 20-02-2010"
string(14) "Sun 21-02-2010"
string(14) "Mon 22-02-2010"
string(14) "Tue 23-02-2010"
string(14) "Wed 24-02-2010"
string(14) "Thu 25-02-2010"
similaires peut être fait relativement facilement avec strtotime comme dans l'extrait ci-dessous (qui produit le même résultat que ci-dessus):
for ($i = 7; $i >= 0; $i--) {
var_dump(date('D d-m-Y', strtotime("-$i days")));
}
- 1. Créer un tableau des 30 derniers jours en utilisant PHP
- 2. Derniers jours du mois précédent
- 3. Algorithme de génération de dates pour les jours ouvrables compte tenu de la plage de dates
- 4. Sélection des utilisateurs inscrits dans les 30 derniers jours et 7 derniers jours dans une requête efficace
- 5. Comment compter les jours entre deux dates en PHP?
- 6. php - liste des dates à venir
- 7. Oracle requête SQL pour afficher le nombre d'événements par jour et le nombre total d'événements pour sept derniers jours
- 8. Sqlite SELECT * pour les 7 derniers jours
- 9. Comment trouver des dates/jours communs dans deux plages de dates
- 10. Ombre les 3 derniers jours en couleur .. aide!
- 11. dates Soustraction en PHP
- 12. jeu début et de fin pour les 30 derniers jours se terminant aujourd'hui avec php
- 13. Comparaison des dates en millisecondes
- 14. Modification des heures en jours
- 15. Comment soustraire des dates?
- 16. Comment puis-je supprimer les sept derniers caractères d'une valeur de hachage en Perl?
- 17. WebDAV et Exchange Server - les contacts ont-ils été modifiés au cours des X derniers jours?
- 18. Comparer des dates en Javascript
- 19. Conversion des dates en AWK
- 20. Ajout de jours à $ Date en PHP
- 21. génération d'extraits en php
- 22. Problème de trouver la différence en jours entre deux dates
- 23. Requête MySQL - Enregistrements entre aujourd'hui et les 30 derniers jours
- 24. Besoin des derniers enregistrements d'un jour, à partir d'une gamme de jours
- 25. Sélection des enregistrements des trois derniers mois
- 26. Différence de jours entre deux dates
- 27. Utilisation de NSDate pour obtenir des dates
- 28. RoR: named_scope, tous les enregistrements créés au cours des 7 derniers jours?
- 29. SQL Sélectionnez uniquement les joueurs ayant joué x nombre de parties au cours des derniers jours?
- 30. Quelle est la meilleure façon de sélectionner les lignes des 7 derniers jours?
cela ne gérera pas les années bissextiles –
et qu'en est-il du mois et de la semaine changent ...? –
@Allain et @Anurag: J'ai édité mon post pour donner quelques autres exemples ;; avez-vous un cas spécifique dans lequel cela ne fonctionne pas? –