Compte tenu d'un timestamp Unix, comment obtenir le début et la fin de la journée?
J'ai un timestamp Unix comme ceci:
$timestamp=1330581600
Comment puis-je obtenir le début de la journée et de la fin de la journée pour que timestamp?
e.g.
$beginOfDay = Start of Timestamp's Day
$endOfDay = End of Timestamp's Day
J'ai essayé ceci:
$endOfDay = $timestamp + (60 * 60 * 23);
Mais je ne pense pas que ça va marcher parce que l'horodatage n'est pas le début exact de la journée.
- Si c'est GMT, probablement: $boundary = sol/ceil($timestamp / (60 * 60 * 24)) * (60 * 60 * 24);
- Si votre résultat attendu est un timestamp comme un entier, il est un simple liner: $beginOfDay = mktime(0, 0, 0, date ("n"), date('j') - 1); $endOfDay = mktime(0, 0, 0, date ("n"), date('j'));
InformationsquelleAutor Talon | 2012-04-17
Vous devez vous connecter pour publier un commentaire.
strtotime peut être utilisé pour de rapidement couper l'heure/minutes/secondes
DateTime peut également être utilisé, mais nécessite quelques étapes supplémentaires pour obtenir à partir d'une longue timestamp
date_default_timezone_set(ServerConfig::DEFAULT_TIMEZONE)
pour définir fuseau horaire approprié, alors maintenant, cette solution fonctionne pour moi aussi. +1.)strtotime('today', $timestamp)
$endOfDay->modify('tomorrow -1 second');
fonctionne également.Juste DateTime
D'abord un objet DateTime est créé et l'horodatage est régler la date et heure. Puis l'objet sous forme de chaîne de réglage de l'heure/minute/seconde au début ou à la fin de la journée. Enfin, un nouvel objet DateTime est créé à partir de cette chaîne et le timestamp est extrait.
Lisible
Nous pouvons obtenir à la fin de la journée, d'une autre façon en utilisant plus de cette version:
Fuseau horaire
Le fuseau horaire peut être réglé par l'ajout d'un horodatage de l'indicateur pour le format tel que
O
et en spécifiant le timestamp après la création de l'objet DateTime:Flexibilité de DateTime
Nous pouvons également obtenir d'autres informations comme le début/la fin du mois ou au début/à la fin de l'heure en changeant la deuxième format spécifié. Pour le mois:
'Y-m-01 00:00:00'
et'Y-m-t 23:59:59'
. Pour l'heure:'Y-m-d H:00:00'
et'Y-m-d H:59:59'
À l'aide de différents formats en combinaison avec la méthode add()/sub() et DateInterval des objets, nous pouvons obtenir le début ou la fin de la période, bien que certaines précautions devront être prises pour résoudre les années bissextiles correctement.
Liens Pertinents
De la PHP docs:
modify
. Je ne connaissais pas ça avant.Vous pouvez utiliser une combinaison de
date()
etmktime()
:mktime()
est assez intelligent pour envelopper les mois/années, lors d'une journée en dehors de ce mois (jan 32e sera 1er février, etc)Vous pouvez convertir le temps de les données actuelles et ensuite utiliser la fonction strtotime pour trouver le début de la journée et ajoutez simplement les 24 heures pour que de trouver la fin de la journée.
Vous pouvez également utiliser le reste de l'opérateur (%) pour trouver le plus proche de la journée. Par exemple:
time()
deux fois, ils pourraient être différents secondes.Aujourd'hui à Partir de la date d'horodatage. Simple
Pour tous ceux qui ont cette question dans l'avenir:
Toute la journée du code
Actuelles du code
Si votre besoin à la fois de valeurs dans le même script. Il est plus rapide de +/- 86400 secondes pour l'une des variables que de tirer à la fois au sol et plafond. Par exemple: