Vous avez un horodatage pour aujourd'hui à minuit?
123
Comment pourrais-je obtenir un horodatage en php pour aujourd'hui à minuit. Disons que c'est lundi 17h et que je veux l'horodatage du lundi (aujourd'hui) à minuit (minuit), ce qui est déjà arrivé.
Minuit n'est ni am ni pm. Techniquement également, aucun horodatage pour minuit n'existe.
hakre
16
@hakre je ne suis pas d'accord avec vous. Minuit est am et quel que soit le format d'un horodatage, il existe une valeur pour minuit.
G-Nugget
1
si 00:00:00 considéré aujourd'hui ou demain. Minuit aujourd'hui, est derrière nous, à presque tout moment, techniquement. Vous voulez 23:59:59 de "ce soir" ou 00:00:00 "minuit d'aujourd'hui, qui est demain", plus ou moins.
mercredi
5
une heure de 00:00:00 serait minuit d'aujourd'hui, comme dans le temps qu'il faut pour arriver à 00:00:00 qui s'est déjà produit. où 23:59:59 serait ce soir. Si vous parlez en termes d'aujourd'hui. Minuit est AM.
Nazca
4
00h00 est minuit en début de journée, 24h00 est minuit en fin de journée. Pour plus de simplicité cependant, la plupart des horloges numériques sautent 24h00 - déclarant que minuit est le début d'une nouvelle journée. Le 8 février 24h00 et le 9 février 00h00 correspondent en pratique au même moment.
@SamHuckaby: C'est encore plus simple: il $timestamp = strtotime('today');est minuit. Mais pssst celui ci-dessus semble plus cool en tant que réponse à la question;)
hakre
En fait, je dois commencer aujourd'hui et minuit aujourd'hui. Comment puis-je trouver le début d'aujourd'hui, je veux dire pour 00:00:00
Happy Coder
3
@AlwinAugustin: Vous devriez envisager de différer votre formulation. Minuit est techniquement entre deux jours. Il n'y a donc plus "aujourd'hui plus". Aussi: Midgnight d'aujourd'hui (par définition) est (juste avant) le début d'aujourd'hui. Vous voulez probablement dire le prochain minuit après midi d'aujourd'hui .
hakre
ouais en fait ce dont j'ai besoin est 00:00:00 d'aujourd'hui et 23:59:59 d'aujourd'hui
Happy Coder
2
Gardez à l'esprit que cela produira le minuit du fuseau horaire de votre serveur PHP, pas UTC + 0 ! Pour obtenir UTC + 0, vous pouvez utiliser strtotime('today+00:00').
mae
73
Je pense que vous devriez utiliser le nouvel objet PHP DateTime car il n'a aucun problème à faire des dates au-delà des restrictions 32 bits de strtotime (). Voici un exemple de la façon dont vous obtiendriez la date d'aujourd'hui à minuit.
$today =newDateTime();
$today->setTime(0,0);
Ou si vous utilisez PHP 5.4 ou une version ultérieure, vous pouvez le faire de cette façon:
$today =(newDateTime())->setTime(0,0);
Ensuite, vous pouvez utiliser le echo $today->format('Y-m-d');pour obtenir le format dans lequel vous souhaitez que votre objet s'affiche.
Je préfère également utiliser le nouvel objet DateTime. Si vous combinez cette réponse avec @ hakr vous obtenez:, ce new DateTime('today midnight')qui rend l'intention plus claire (mais c'est bien sûr une question de goût).
Martijn
1
Je fais du travail ORM SQL et j'ai dû utiliser l'objet DateTime pour les comparaisons. Ceci est exactement ce que je cherchais. +1
NobleUplift
Peut être$today = new DateTime('today')
ProgZi
Également utile si vous utilisez Carbon, qui hérite de DateTime. Ainsi, vous pouvez également faire new Carbon('today midnight')et ensuite vous pouvez utiliser tous les trucs de Carbon comme ->subDays(6). Voir carbon.nesbot.com
Christopher K.
Concernant la restriction 32 bits: Le docu PHP pour strtotime déclare : "Pour les versions 64 bits de PHP, la plage valide d'un horodatage est effectivement infinie, car 64 bits peuvent représenter environ 293 milliards d'années dans les deux sens." Donc, cela ne s'applique qu'au php 32 bits.
Vous cherchez à calculer l'heure de l'événement céleste le plus récent où le soleil est passé directement sous vos pieds, ajustée pour les conventions locales de marquage haut midi et également potentiellement ajustée pour que les gens aient suffisamment de lumière du jour après le retour du travail, et pour autres considérations politiques.
C'est intimidant, non? En fait, c'est 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();
Comme strtotime('America/New_York today midnight');? - 3v4l.org/I85qD
hakre
5
$today_at_midnight = strtotime(date("Ymd"));
devrait vous donner ce que vous recherchez.
explication
Ce que j'ai fait, c'est d'utiliser la fonction de date de PHP pour obtenir la date du jour sans aucune référence à l'heure, puis de la passer à la fonction 'string to time' qui convertit une date et une heure en horodatage d'époque. S'il n'y a pas d'heure, il prend la première seconde de la journée.
Y a-t-il un format particulier que le PO a demandé? Si tel est le cas, je serais heureux de modifier mon message pour renvoyer le format souhaité.
SamHuckaby
complètement négligé strtotime(), l'esprit était tellement concentré sur la fonction de date. Toutes mes excuses.
mercredi
2
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 omis d'ajouter aujourd'hui avant minuit car la valeur par défaut est aujourd'hui.
Réponses:
Vous voudrez peut-être jeter un coup d'œil à ce que PHP a à offrir: http://php.net/datetime
la source
$timestamp = strtotime('today');
est minuit. Mais pssst celui ci-dessus semble plus cool en tant que réponse à la question;)strtotime('today+00:00')
.Je pense que vous devriez utiliser le nouvel objet PHP DateTime car il n'a aucun problème à faire des dates au-delà des restrictions 32 bits de strtotime (). Voici un exemple de la façon dont vous obtiendriez la date d'aujourd'hui à minuit.
Ou si vous utilisez PHP 5.4 ou une version ultérieure, vous pouvez le faire de cette façon:
Ensuite, vous pouvez utiliser le
echo $today->format('Y-m-d');
pour obtenir le format dans lequel vous souhaitez que votre objet s'affiche.Objet PHP DateTime
la source
new DateTime('today midnight')
qui rend l'intention plus claire (mais c'est bien sûr une question de goût).$today = new DateTime('today')
new Carbon('today midnight')
et ensuite vous pouvez utiliser tous les trucs de Carbon comme->subDays(6)
. Voir carbon.nesbot.comAujourd'hui à minuit. Facile.
la source
Vous cherchez à calculer l'heure de l'événement céleste le plus récent où le soleil est passé directement sous vos pieds, ajustée pour les conventions locales de marquage haut midi et également potentiellement ajustée pour que les gens aient suffisamment de lumière du jour après le retour du travail, et pour autres considérations politiques.
C'est intimidant, non? En fait, c'est un problème courant, mais la réponse complète dépend de l'emplacement:
Les définitions potentielles de «ici» sont répertoriées sur https://secure.php.net/manual/en/timezones.php
la source
strtotime('America/New_York today midnight');
? - 3v4l.org/I85qDdevrait vous donner ce que vous recherchez.
explication
Ce que j'ai fait, c'est d'utiliser la fonction de date de PHP pour obtenir la date du jour sans aucune référence à l'heure, puis de la passer à la fonction 'string to time' qui convertit une date et une heure en horodatage d'époque. S'il n'y a pas d'heure, il prend la première seconde de la journée.
Références: Fonction de date: http://php.net/manual/en/function.date.php
Chaîne à l'heure: http://us2.php.net/manual/en/function.strtotime.php
la source
strtotime()
, l'esprit était tellement concentré sur la fonction de date. Toutes mes excuses.De manière plus objet:
exemple:
et:
la source
est le même que
et c'est un peu moins de travail sur votre serveur.
la source
$midnight = strtotime('midnight');
est valideVous pouvez également essayer
strtotime('12am')
oustrtotime('[input any time you wish to here. e.g noon, 6pm, 3pm, 8pm, etc]')
. J'ai omis d'ajouter aujourd'hui avant minuit car la valeur par défaut est aujourd'hui.la source
Si vous utilisez Carbon, vous pouvez effectuer les opérations suivantes. Vous pouvez également formater cette date pour définir un
Expire
en-tête HTTP.la source
Réponse mise à jour le 19 avril 2020
Nous pouvons simplement faire ceci:
$today = date('Y-m-d 00:00:00');
la source
la source