plexcell
Traté de buscar esto, pero no pude encontrar un buen ejemplo de lo que estoy tratando de hacer.
Obtuve valores de fecha y hora en la base de datos MySQL que deben redondearse cuando ese valor está en uso.
Ejemplo, todos estos valores:
2013-04-20 07:14:42
2013-04-20 07:19:51
2013-04-20 07:37:26
2013-04-20 07:46:28
2013-04-20 07:59:44
Debe redondearse a:
2013-04-20 07:00:00
Y
2013-04-20 16:25:34
debiera ser:
2013-04-20 16:00:00 etc…
Código PHP que obtiene el valor de la fecha:
$d = strtotime($row["date"]);
Entonces, ¿cómo es posible redondear el valor de fecha y hora?
Rikesh
Prueba esto,
$date = "2013-04-20 16:25:34";
echo date("Y-m-d H:00:00",strtotime($date));
-
Gracias 🙂 Lo tengo funcionando con esto: $d = strtotime(date(“Ymd H:00:00”,strtotime($row[“date”])));
– plexcell
20 de abril de 2013 a las 9:24
Si está utilizando la biblioteca Carbon DateTime de PHP (que realmente debería – https://github.com/briannesbitt/Carbono )
Puedes lograrlo fácilmente usando
Carbon::now()->minute(0)->second(0);
-
¿Qué pasa con los microsegundos?
– Yevgeniy Afanasyev
21 de marzo de 2018 a las 3:20
-
Verifique mi respuesta como uso
startOfHour();
– ml59
24 de diciembre de 2021 a las 14:13
Como ya tienes una marca de tiempo de Unix $d
la forma más eficiente es usar solo aritmética en lugar de funciones de fecha, especialmente si va a recorrer un conjunto de resultados.
$hourTimestamp = $d - ($d % 3600);
El operador Modulo le da el resto que resta de la marca de tiempo para obtener la marca de tiempo de la hora.
-
Las fechas de PHP consideran las zonas horarias, mientras que las marcas de tiempo de Unix siempre están en UTC, por lo que esto no dará el resultado esperado para zonas horarias como India (UTC+5½) o Irán (UTC+3½).
– Gamificación
6 de julio de 2020 a las 5:38
En ese caso un simple substr
podría hacer:
echo substr($date, 0, 13) . ":00:00";
En referencia a la respuesta de @Dayson, esta es una mejor manera de redondear la fecha y hora a la última hora con Carbon
$dt = Carbon::create(2012, 1, 31, 15, 32, 45);
echo $dt->startOfHour(); // 2012-01-31 15:00:00
comprobar el modificador sección en Carbono Doc
Steve
Para aquellos que siguen (¡mucho más tarde!): Carbon tiene una manera fácil de hacer esto
$date = (new Carbon($row['date']))->minute(0)->second(0)->getTimestamp();
fabio
puedes usar
date
y strtotime
función función para lograr esto, simplemente ya cambie sus minutos y segundos según
$date="2013-04-20 07:14:42";
$newdate = date('Y-m-d H:00:00', strtotime($date));
echo $newdate;
esto dará salida
2013-04-20 07:00:00
¿Las fechas y horas son UTC?
– oxígeno
20 de abril de 2013 a las 9:11
¿Qué pasa con los microsegundos?
– Yevgeniy Afanasyev
21 de marzo de 2018 a las 3:21
Función para redondear arbitrariamente PHP DateTimes: stackoverflow.com/a/57399274/339440
– Esteban R.
8 de agosto de 2019 a las 0:12