¿Cómo consigo, por ejemplo, la marca de tiempo 22-09-2008
?
350
Este método funciona tanto en Windows como en Unix y tiene en cuenta la zona horaria , que es probablemente lo que desea si trabaja con fechas .
Si no le importa la zona horaria o desea utilizar la zona horaria que utiliza su servidor:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (Esto diferirá según la zona horaria de su servidor ...)
Si desea especificar en qué zona horaria, aquí EST. (Igual que Nueva York).
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
O si quieres usar UTC . (Igual que " GMT ").
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
De todos modos, siempre es un buen punto de partida para ser estricto al analizar cadenas en datos estructurados. Puede ahorrar una depuración incómoda en el futuro. Por lo tanto, recomiendo especificar siempre el formato de fecha.
También hay strptime () que espera exactamente un formato:
fuente
date_parse_from_format
lugar destrptime
.strptime
no está implementado en plataformas Windows.Con
DateTime
API :Lo mismo con la API de procedimiento:
Si lo anterior falla porque está usando un formato no compatible , puede usar
Tenga en cuenta que si no configura
!
, la parte de tiempo se establecerá en la hora actual, que es diferente de las cuatro primeras que utilizarán la medianoche cuando omita la hora.Otra alternativa es usar la
IntlDateFormatter
API:A menos que esté trabajando con cadenas de fecha localizadas, la opción más fácil es probablemente DateTime.
fuente
!
marca de fecha y hora basada en Mi fecha cambiaba en cada actualización y me volvía loco, porque DateTime estaba agregando la hora actual sin preguntar ni decir nada. Grrr.Tenga cuidado con funciones como
strtotime()
esa, intente "adivinar" lo que quiere decir (no adivina, por supuesto, las reglas están aquí ).De hecho
22-09-2008
, se analizará el 22 de septiembre de 2008 , ya que es lo único razonable.¿Cómo se
08-09-2008
analizará? Probablemente el 09 de agosto de 2008 .¿Qué hay de
2008-09-50
? Algunas versiones de PHP analizan esto el 20 de octubre de 2008 .Entonces, si está seguro de que su entrada está en
DD-MM-YYYY
formato, es mejor usar la solución ofrecida por @Armin Ronacher .fuente
dd-mm-yyyy
, nomm-dd-yyyy
.YYYY-mm-dd
La conversión solo se muestra a los usuariosEste método funciona tanto en Windows como en Unix y tiene en cuenta la zona horaria , que es probablemente lo que desea si trabaja con fechas .
Si no le importa la zona horaria o desea utilizar la zona horaria que utiliza su servidor:
1222093324 (Esto diferirá según la zona horaria de su servidor ...)
Si desea especificar en qué zona horaria, aquí EST. (Igual que Nueva York).
1222093305
O si quieres usar UTC . (Igual que " GMT ").
1222093289
De todos modos, siempre es un buen punto de partida para ser estricto al analizar cadenas en datos estructurados. Puede ahorrar una depuración incómoda en el futuro. Por lo tanto, recomiendo especificar siempre el formato de fecha.
fuente
Usando mktime :
fuente
strtotime()
por alguna razónstrtotime()
no funciona en ciertas fechas y, por lo tanto, es poco confiable.Usando la función strtotime () puede convertir fácilmente la fecha a la marca de tiempo
Más información: http://php.net/manual/en/function.strtotime.php
Herramienta de conversión en línea: http://freeonlinetools24.com/
fuente
Aquí hay una solución muy simple y efectiva usando las funciones
split
ymtime
:Funcionó como un encanto para mí.
fuente
Dado que la función
strptime()
no funciona para Windows ystrtotime()
puede devolver resultados inesperados, recomiendo usardate_parse_from_format()
:fuente
Si desea saber con certeza si una fecha se analiza en algo que espera, puede usar
DateTime::createFromFormat()
:Es obvio en este caso, pero, por ejemplo,
03-04-2008
podría ser el 3 de abril o el 4 de marzo, dependiendo de dónde vengas :)fuente
DateTime::createFromFormat
vuelvefalse
por error , nonull
.Si conoce el uso del formato
strptime
porquestrtotime
adivina el formato, lo que no siempre es correcto. Comostrptime
no está implementado en Windows, hay una función personalizada¡Recuerde que el valor de retorno
tm_year
es de 1900! ytm_month
es 0-11Ejemplo:
fuente
http://php.net/manual/en/function.date.php
fuente
fuente
Usar la función PHP
strtotime()
date - Formatea una hora / fecha local
fuente
fuente
Si lo desea, póngalo en una marca de tiempo del tipo de entrada MySQL . Lo anterior funciona muy bien (solo en PHP 5 o posterior):
fuente
Así es como lo haría:
De esta manera, le permite a la función saber qué formato de fecha está utilizando e incluso especificar la zona horaria.
fuente
Tenga cuidado con la hora / zona si la configura para guardar fechas en la base de datos, ya que tuve un problema al comparar las fechas de mysql que se convirtieron al
timestamp
usostrtotime
. debe usar exactamente la misma hora / zona antes de convertir la fecha a la marca de tiempo; de lo contrario, strtotime () usará la zona horaria predeterminada del servidor.Por favor vea este ejemplo: https://3v4l.org/BRlmV
fuente
Si está buscando convertir una fecha y hora UTC (
2016-02-14T12:24:48.321Z
) en marca de tiempo, así es como lo haría:fuente