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é.
Je vous remercie
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é.
Je vous remercie
Réponses:
$timestamp = strtotime('today midnight');
Vous voudrez peut-être jeter un coup d'œil à ce que PHP a à offrir: http://php.net/datetime
$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.
$today = new DateTime();
$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 = (new DateTime())->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.
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.com
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();
Les définitions potentielles de «ici» sont répertoriées sur https://secure.php.net/manual/en/timezones.php
strtotime('America/New_York today midnight');
? - 3v4l.org/I85qD
$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.
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
strtotime()
, l'esprit était tellement concentré sur la fonction de date. Toutes mes excuses.
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.
function getTodaysTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const startOfDay = currentTimeStamp - (currentTimeStamp % 86400);
return { startOfDay, endOfDay: startOfDay + 86400 - 1 };
}
// starts from sunday
function getThisWeeksTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfWeek = currentTimeStamp - (currentDay.getDay() * 86400) - (currentTimeStamp % 86400);
return { startOfWeek, endOfWeek: startOfWeek + 7 * 86400 - 1 };
}
function getThisMonthsTimeStamp() {
const currentTimeStamp = Math.round(Date.now() / 1000);
const currentDay = new Date(currentTimeStamp * 1000);
const startOfMonth = currentTimeStamp - ((currentDay.getDate() - 1) * 86400) - (currentTimeStamp % 86400);
const currentMonth = currentDay.getMonth() + 1;
let daysInMonth = 0;
if (currentMonth === 2) daysInMonth = 28;
else if ([1, 3, 5, 7, 8, 10, 12].includes(currentMonth)) daysInMonth = 31;
else daysInMonth = 30;
return { startOfMonth, endOfMonth: startOfMonth + daysInMonth * 86400 - 1 };
}
console.log(getTodaysTimeStamp());
console.log(getThisWeeksTimeStamp());
console.log(getThisMonthsTimeStamp());