Pregunta

Parece que no puedo utilizar el objeto Date de JavaScript, ya que por defecto inherintly a US fechas cuando se inicialice con una DateString. No hay manera de transmitir cualquier información de referencia cultural para el objeto de fecha

es decir. No importa lo que los clientes están configuración local

var d = new Date ( "08/10/2009") siempre va a crear un objeto que representa la fecha 10 de agosto 2009 en lugar de 8 de octubre de 2009, si el cliente local fue el Reino Unido.

Así que dado que mi requisito es ser capaz de añadir / restar días / meses / años fácilmente ¿hay una forma inteligente de hacer esto fácilmente sin que el objeto de la fecha

Todo lo que tiene que hacer es añadir un día para una fecha (o una representación de cadena de una fecha). por lo que si mi código detecta la configuración regional setttings están en los EE.UU., cuando ve una cadena como "10/08/2009" que golpea a que hasta "10/09/2009" pero si hubiera detectado que era en el Reino Unido que lo haría se sabe que una representación de cadena del Reino unido de una fecha y golpeado hasta que "09/10/2009"

¿Fue útil?

Solución

Para la manipulación de la fecha y la localización de JavaScript Siempre recomiendo la biblioteca Datejs .

Esta biblioteca abstrae el uso de objetos Date, tiene una muy buena opciones de localización, análisis de gran alcance la fecha y el formato, y también tiene un muy buen API fluida.

Otros consejos

Si saber que está recibiendo de entrada con formato dd / mm / aaaa se puede montar fácilmente la fecha correcta.

function britDay(D){
 D= D.match(/\d+/g);
 return new Date(+D[2], D[1]-1, +D[0]);
}

toLocaleDateString devolverá la fecha en el formato esperado por el usuario.

Basándose en la entrada del usuario que obedece a las reglas de formato particulares es optimista- razón por la cual la mayoría de los sitios utilizan, las entradas etiquetadas por separado o seleccione los campos para el mes, día y año.

Usted probablemente sabe que es fácil de añadir un día para una fecha, sólo tiene que añadir 86.400 * 1000 milisegundos a la fecha. Suena como mostrar en su localidad es la cuestión; no Date.toLocaleString () no hacer lo correcto para usted?

dojo.date.locale.parse será capaz de analizar una cadena con formato según la configuración regional de su elección. Tiene una mesa de sede fuera unicode.org/cldr datos culturales. Ver este artículo para más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top