2011-06-28 27 views

Respuesta

25

Mire strtotime, strptime o la clase DateTime.

strtotime Ejemplo:

$timestamp = strtotime('1/1/2011'); 

Cada función tiene su advertencia. Por ejemplo, la documentación para strtotime estados que:

fechas en el m/D/A o dmy formatos se desambiguado mirando el separador entre los diversos componentes: si el separador es un barra (/), entonces el m/d/y americano es asumido; mientras que si el separador es un guión (-) o un punto (.), entonces se asume el formato d-m-y europeo .

También es posible usar preg_match para capturar las 3 partes y crear su propia marca de tiempo usando mktime.

preg_match Ejemplo:

if (preg_match('/^(?P<day>\d+)[-\/](?P<month>\d+)[-\/](?P<year>\d+)$/', '1/1/2011', $matches)) 
{ 
    $timestamp = mktime(0, 0, 0, ($matches['month'] - 1), $matches['day'], $matches['year']); 
} 
+0

su expresión regular supone el formato dd-mm-yyyy, que no estoy seguro de que sea. – StackOverflowNewbie

+0

@StackOverflowNewbie - Su pregunta dijo: "Tenga en cuenta que en la mayoría de los casos, esto tendrá el formato de dd mm aaaa con varios delimitadores". así que fui con ese formato, pero podrías agregar sentencias 'elseif' al original que verifica los diferentes formatos y hacer el' regex' más específico (es decir, en lugar de \ d + usa un patrón que describe 0-12 para el mes y 0 -31 por los días). Por supuesto, en el caso de 1/2/13, es imposible saber cuál es, a menos que sepa el formato. –

0

usted está probablemente en busca strtotime function.

Sin embargo, como precaución, convertirá todos y cada uno de los posibles formatos de cadena a una marca de tiempo unix (época) ya que es muy difícil analizar de forma inequívoca todas y cada una de las cadenas a fecha y hora.

3
$to='23.1.2014-18:16:35' 
list($part1,$part2) = explode('-', $to); 
list($day, $month, $year) = explode('.', $part1); 
list($hours, $minutes,$seconds) = explode(':', $part2); 
$timeto = mktime($hours, $minutes, $seconds, $month, $day, $year); 
echo $timeto;