web-dev-qa-db-fra.com

Obtenir un horodatage pour aujourd'hui à minuit?

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

97
user1701398
$timestamp = strtotime('today midnight');

Vous voudrez peut-être jeter un coup d'œil à ce que PHP peut offrir: http://php.net/datetime

193
hakre

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.

PHP Objet DateTime

60
Joe Meyer

Aujourd'hui à minuit Facile.

$stamp = mktime(0, 0, 0);
16
bearcat

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

4
William Entriken
$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

4
SamHuckaby

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)
0
nowox
$timestamp = strtotime('today midnight');

est le même que

$timestamp = strtotime('today');

et c'est un peu moins de travail sur votre serveur.

0
Case

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
0
Jan Galtowski

$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.

0
Victor Mbamara