php - ventajas - ¿Qué es una marca de tiempo de Unix y por qué usarlo?
unix ventajas y desventajas (1)
¿Qué es una marca de tiempo de Unix? En PHP, cuando se trabaja con fechas, la función strtotime()
genera un valor entero, ¿qué es eso? Traté de aprender sobre esto, pero no pude obtener una respuesta satisfactoria, especialmente por qué necesitamos convertir fechas usando strtotime()
.
Qué es una marca de tiempo de Unix
En pocas palabras, la marca de tiempo Unix es una forma de seguir el tiempo como un total acumulado de segundos. Este recuento comienza en Unix Epoch el 1 de enero de 1970 en UTC. Por lo tanto, la marca de tiempo de Unix es simplemente el número de segundos entre una fecha determinada y la Época Unix . También se debe señalar que este punto en el tiempo técnicamente no cambia sin importar dónde se encuentre en el mundo. Esto es muy útil para los sistemas informáticos para rastrear y clasificar información anticuada en aplicaciones dinámicas y distribuidas tanto en línea como en el lado del cliente. Muchas webmasters usan la razón por la cual los sellos de tiempo de Unix se deben a que pueden representar todas las zonas horarias a la vez. Para obtener más información, lea el artículo de Wikipedia .
¿Qué es strtotime()
y cómo es útil?
Como su nombre lo sugiere, la función strtotime()
se usa para convertir una cadena de fecha en una marca de tiempo Unix (str to time).
De la documentación manual de PHP para strtotime()
:
strtotime - Parse sobre cualquier descripción textual de fecha y hora en inglés en una marca de tiempo Unix
Por ejemplo, supongamos que desea obtener la marca de tiempo de Unix para la fecha del 25 December 2013
, y luego usaría strtotime()
manera:
echo strtotime("25 December 2013"), "/n"; // => 1387909800
strtotime()
también puede manejar formatos de fecha y hora relativos. Por ejemplo, considere lo siguiente:
echo strtotime("+1 month"), "/n"; // => 1390980039
echo strtotime("last day of next month"), "/n"; // => 1391152839
Estos son algunos ejemplos básicos. strtotime()
puede manejar formatos de fecha muy complejos. Consulte la documentación para más información.
¿Cuándo debería usar una marca de tiempo?
Una marca de tiempo de Unix se interpreta igual independientemente de la región, y se calcula a partir del mismo punto en el tiempo, independientemente de la zona horaria. Si tiene una aplicación web que se utiliza en varias zonas horarias y necesita una fecha / hora para reflejar la configuración de los usuarios individuales, use una marca de tiempo.
En el caso de strtotime()
, se usa principalmente para convertir formatos de fecha. Dado que strtotime()
puede analizar casi cualquier cadena de fecha, se usa para convertir la cadena de fecha en una marca de tiempo. Una vez que tenga la marca de tiempo, puede formatearla como desee, usando la date()
o funciones similares.
Limitaciones de strtotime()
En un sistema de 32 bits, el valor máximo de un entero es 2.147.483.647. El último momento que se puede representar de esta manera es a las 03:14:07 UTC del martes 19 de enero de 2038. Esto también se conoce como el problema del año 2038 .
Vea esta nota en el manual de PHP :
El rango válido de una marca de tiempo es típicamente de viernes, 13 de diciembre de 1901 20:45:54 UTC a martes, 19 de enero de 2038, 03:14:07 UTC. (Estas son las fechas que corresponden a los valores mínimo y máximo para un entero de 32 bits con signo.) Además, no todas las plataformas admiten marcas de tiempo negativas, por lo tanto, su intervalo de fechas puede limitarse a no antes de la época de Unix. Esto significa que, por ejemplo, las fechas anteriores al 1 de enero de 1970 no funcionarán en Windows, algunas distribuciones de Linux y algunos otros sistemas operativos. PHP 5.1.0 y versiones más nuevas superan esta limitación.
Use objetos DateTime
Si está trabajando con fechas fuera del rango del 13 Dec 1901
al 19 Jan 2038
, considere usar objetos DateTime de PHP que pueden funcionar con un rango de fechas mucho más amplio. DateTime puede representar aproximadamente 293 mil millones de años en cualquier dirección.
La clase DateTime está disponible en versiones de PHP> = 5.2.0. Si está ejecutando una versión de PHP que está por encima de> = 5.2.0, entonces debe usar DateTime cuando trabaje con fechas y horas. Es la mejor manera de ir. Si tienes una versión PHP más antigua, actualízate ya . Cualquier cosa anterior a 5.3.0 es antigua.
- Utilice
DateTime::__construct()
oDateTime::createFromFormat()
para crear un objetoDateTime
. Tenga en cuenta queDateTime::createFromFormat()
solo está disponible en PHP> = 5.3. Con este método, puede analizar cadenas extrañas de fecha y hora que de otro modo no serían posibles constrtotime()
- Utilice el método
DateTime::format()
para convertir su objetoDateTime
a cualquier formato de fecha con el que desee trabajar
Aquí hay algunos buenos artículos sobre DateTime:
Y un libro para el estante:
- php | Guía del arquitecto para la programación de fecha y hora (escrito por Derick Rethans , quien contribuye a la extensión de fecha principal de PHP)