Comment pourrais-je obtenir un timestamp en php pour aujourd'hui à minuit. Disons qu'il est lundi 17h et que je veux l'horodatage du lundi (aujourd'hui) à minuit (12h), ce qui est déjà arrivé.
Je vous remercie
$timestamp = strtotime('today midnight');
Vous voudrez peut-être jeter un coup d'œil à ce que PHP peut offrir: http://php.net/datetime
Je pense que vous devriez utiliser le nouvel objet PHP DateTime car il n’a aucun problème à traiter les dates au-delà des restrictions 32 bits de strtotime (). Voici un exemple de la façon dont vous obtiendrez la date d'aujourd'hui à minuit.
$today = new DateTime();
$today->setTime(0,0);
Ou, si vous utilisez PHP 5.4 ou une version ultérieure, procédez comme suit:
$today = (new DateTime())->setTime(0,0);
Ensuite, vous pouvez utiliser echo $today->format('Y-m-d');
pour obtenir le format de sortie de votre objet.
Aujourd'hui à minuit Facile.
$stamp = mktime(0, 0, 0);
Vous souhaitez calculer l’heure du dernier événement céleste où le Soleil est passé directement sous vos pieds, ajustée pour tenir compte des conventions locales de l’heure de midi et de l’ajustement éventuel pour que les personnes aient encore assez de lumière du jour après leur retour autres considérations politiques.
Intimidant n'est-ce pas? En réalité, il s’agit d’un problème courant, mais la réponse complète dépend de l’emplacement:
$zone = new \DateTimeZone('America/New_York'); // Or your own definition of “here”
$todayStart = new \DateTime('today midnight', $zone);
$timestamp = $todayStart->getTimestamp();
Les définitions potentielles de «ici» sont listées à https://secure.php.net/manual/fr/timezones.php
$today_at_midnight = strtotime(date("Ymd"));
devrait vous donner ce que vous recherchez.
explication
Ce que j'ai fait, c'est utiliser la fonction de date de PHP pour obtenir la date d'aujourd'hui sans aucune référence à l'heure, puis la transmettre à la fonction 'string to time' qui convertit une date et une heure en horodatage Epoch. S'il n'a pas de temps, cela suppose la première seconde de ce jour.
Références: Date Fonction: http://php.net/manual/fr/function.date.php
String To Time: http://us2.php.net/manual/en/function.strtotime.php
Si vous utilisez Carbon, vous pouvez procéder comme suit. Vous pouvez également formater cette date pour définir un en-tête HTTP Expire
.
Carbon::parse('tomorrow midnight')->format(Carbon::RFC7231_FORMAT)
$timestamp = strtotime('today midnight');
est le même que
$timestamp = strtotime('today');
et c'est un peu moins de travail sur votre serveur.
De manière plus objet:
$today = new \DateTimeImmutable('today');
exemple:
echo (new \DateTimeImmutable('today'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 00:00:00
et:
echo (new \DateTimeImmutable())->format('Y-m-d H:i:s');
echo (new \DateTimeImmutable('now'))->format('Y-m-d H:i:s');
// will output: 2019-05-16 14:00:35
$midnight = strtotime('midnight');
est valide
Vous pouvez également essayer strtotime('12am')
ou strtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
. J'ai ignoré l'ajout aujourd'hui avant minuit, car la valeur par défaut est aujourd'hui.