2010-04-09 1 views
27

Estoy usando la API de Twitter para devolver una lista de actualizaciones de estado y las veces que fueron creadas. Está volviendo la fecha de creación en el siguiente formato:Analizando Twitter API Datestamp

Fri Apr 09 12:53:54 +0000 2010

¿Cuál es la manera más simple (con PHP o JavaScript) para dar formato a esto como 09-04 -2010?

Respuesta

31

strtotime("dateString"); lo pone en el formato de fecha PHP nativo, entonces puede trabajar con la función date() para imprimirlo como le gustaría.

+0

que suena bien, gracias, $ tiempo = strtotime ($ frase-> created_at); \t \t \t \t \t \t \t \t \t \t \t echo $ tiempo; me lo está dando así ... 1270817634. ​​¿Cómo uso la función de fecha() con eso? –

+3

Ah, espera, lo tengo trabajando. date ("jS F Y", $ time) me da el 9 de abril de 2010. ¡Gracias! –

+0

Sí, el análisis de la fecha en PHP está bastante bien formado. Tenga en cuenta que strtotime aceptará CASI cualquier cosa que arroje en ella. Es caro pero bastante poderoso. –

3

Javascript. Como @Andy señaló, va a ser una perra cuando se trata de IE. Por lo tanto, es mejor confiar en una biblioteca que lo haga de manera consistente. DateJS parece una buena biblioteca.

Una vez que se añade la biblioteca, deberá analizar y dar formato como:

var date = Date.parse("Fri Apr 09 12:53:54 +0000 2010"); 
var formatted = date.toString("dd-MM-yyyy"); 

En PHP puede utilizar las funciones de fecha o de la clase DateTime a hacer lo mismo (disponible a partir de PHP 5.2.0):

$date = new DateTime("Fri Apr 09 12:53:54 +0000 2010"); 
echo $date->format("d-m-Y"); // 09-04-2010 
+0

Esto le da 'NaN' en Internet Explorer, aunque funciona en Chrome. IE tiene problemas con el '+ 0000'. –

+0

gracias por el consejo Andy. es mejor ir al lado del servidor, o utilizar una biblioteca de análisis de fecha como una fecha – Anurag

+0

También hay una buena biblioteca jQuery PHPDate disponible (a través de google) –

6

JavaScript puede analizar esa fecha si se quita el +0000 de la cadena:

var dStr = "Fri Apr 09 12:53:54 +0000 2010"; 
dStr = dStr.replace("+0000 ", "") + " UTC"; 
var d = new Date(dStr); 

Chrome, y sospecho que otros navegadores que no sean IE, pueden analizarlo con el +0000 presente en la cadena, pero también puede eliminarlo para interoperabilidad.

PHP puede analizar la fecha con strtotime:

strtotime("Fri Apr 09 12:53:54 +0000 2010"); 
+0

gracias, fui con la opción strtotime. Sin embargo, tu ejemplo de Javascript simplemente respondió a otra pregunta que tuve, ¡gracias! –

+0

Sin embargo, la cadena de fecha original está probablemente en UTC (y por lo tanto en +0000). 'new Date()' lo analizará en la zona horaria local. –

+3

Esto se analiza en la zona horaria correcta: 'dStr = dStr.replace (" + 0000 "," ") +" GMT ";' –

45

entre navegadores, zona horaria consciente de análisis a través de JavaScript:

var s = "Fri Apr 09 12:53:54 +0000 2010"; 

var date = new Date(
    s.replace(/^\w+ (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/, 
     "$1 $2 $4 $3 UTC")); 

Probado en IE, Firefox, Safari, Chrome y Opera .

+13

Gran respuesta. ¿Por qué Twitter se conformó con este horrible formato de fecha? – brad

3

Aquí es formato de fecha para la API de Twitter:

Sat Jan 19 20:38:06 +0000 2013 
"EEE MMM dd HH:mm:ss Z yyyy" 
+0

¿Cuál es el significado de "Z" aquí? ¿Es zona? ¿+0000? ¿Cuál será el tiempo en IST? GMT +5: 30 –

+0

@SANDHYALALKUMAR eso es RFC 822 Huso horario // https://gist.github.com/romaonthego/5138532 – k06a

+1

Creo que todos podemos estar de acuerdo en que es una mierda –