2009-07-06 12 views
21

¿Qué es una forma invariante de cultura de construir una cadena de modo que el constructor Javascript Date() pueda analizarla y crear el objeto de fecha apropiado?La cadena de formato de JavaScript Date.parse (...) correcta?

me han tratado estas cadenas de formato que no funcionan (usando C# para generar las cuerdas):

clientDate.ToString(); 
// gives: "11/05/2009 17:35:23 +00:00" 

clientDate.ToString("MMM' 'dd', 'yyyy' 'h':'mm':'ss' 'tt"); 
// works on an English server 
// but on a French server, gives: "mai 11, 2009 5:35:23" 
// Javascript won't parse that. 

clientDate.ToString("MM'-'dd'-'yyyy' 'HH':'mm':'ss") 
// gives: 05-11-2009 17:35:23 

¿Cuál es el formato universal ??

+0

buena pregunta, este es un problema difícil – annakata

+0

¿Por qué quieres una sola cuerda para eso? – Boldewyn

+0

Necesito emitir una cadena al navegador para poder usar Javascript para localizar la cadena, usando la función de Javascript toLocaleString(). Sin embargo, he tenido dificultades para encontrar un formato de cadena única exitosa que emitirán todos mis servidores. –

Respuesta

19

According to MDC:

Dada una cadena que representa un tiempo, parse devuelve el valor del tiempo. Acepta el estándar IETF (RFC 1123 Sección 5.2.14 y en otros lugares) sintaxis de fecha: "Mon, 25 Dec 1995 13:30:00 GMT". Comprende las abreviaturas de la zona horaria continental de EE. UU., Pero para uso general, utilice un desplazamiento de zona horaria, por ejemplo, "Mon, 25 Dec 1995 13:30:00 GMT+0430" (4 horas, 30 minutos al este del meridiano de Greenwich). Si no especifica un huso horario, se asume el huso horario local. GMT y UTC se consideran equivalentes.

Si no puede generar este formato utilizando la configuración regional Inglés, trate de usar Date.UTC

+0

RFC 1123 al rescate! Gracias Maciej! –

1

Si desea un formato independiente de la Localidad Javascript puede analizar, puede utilizar 2013-03-31T16:36:57+0900. Funciona al menos en Node.js y Chrome, así que sospecho que es estándar.

+0

No funciona en Android 2.2 (funciona en 2.3 y superior). No funciona en ningún dispositivo iOS (probado 5.0 y 6.0). –

+0

¿Qué tal '2013-03-31T16: 36: 57Z' entonces? Funciona aquí en iOS. La diferencia es que ahora el tiempo debe ser GMT. – jcayzac

+1

Si fuera así de simple ... Ese formato (se llama ISO-8601) tampoco funcionará en IE8. –