2010-06-04 66 views
32

Tengo una cadena de fecha "Domingo, 28 de febrero de 2010" que me gustaría convertir a un objeto de fecha js formateado @ MM/DD/YYYY pero no sé cómo. ¿Alguna sugerencia?jquery/javascript convertir fecha cadena a fecha

+1

Tal ** split() ** es más rápido, y se puede escribir código más corto :) –

Respuesta

22

Me gustaría tomar date.js o de lo contrario tendrá que ejecutar su propia función de formateo.

+4

1. Date.js es como una torta deliciosa y húmeda –

+8

Debe tenerse en cuenta que date.js rompe jQuery UI datepicker porque altera el prototipo de fecha. El núcleo de jQuery dice que no corregirán los errores relacionados con esto. – SupaIrish

4
var stringDate = "Sunday, February 28, 2010"; 

var months = ["January", "February", "March"]; // You add the rest :-) 

var m = /(\w+) (\d+), (\d+)/.exec(stringDate); 

var date = new Date(+m[3], months.indexOf(m[1]), +m[2]); 

El método indexOf en matrices solamente se apoya en los nuevos navegadores (es decir, no IE). Tendrá que buscar usted mismo o usar una de las muchas bibliotecas que ofrecen la misma funcionalidad.

También el código carece de cualquier comprobación de error que se debe agregar. (String que no coincida con la expresión regular, meses inexistentes, etc.)

98

Si usted está funcionando con jQuery puede utilizar la función parseDate de la biblioteca de interfaz de usuario selector de fechas para convertir la cadena a una fecha:

var d = $.datepicker.parseDate("DD, MM dd, yy", "Sunday, February 28, 2010"); 

y luego seguir con el método formatDate para conseguir que el formato de cadena que desea

var datestrInNewFormat = $.datepicker.formatDate("mm/dd/yy", d); 

Si usted no está funcionando con jQuery, por supuesto, quizás no sea el mejor plan dado que había necesidad de jQuery núcleo, así como el módulo de interfaz de usuario datepicker ... es mejor ir con la sugerencia stion de Segfault arriba para usar date.js.

HTH

+8

+1 para una respuesta usando jquery. La respuesta más cercana a esa pregunta. Si está usando jquery, no necesita agregar otra lib. –

+3

No, eso no está bien. datepicker no es parte de jQuery. Es parte de jQuery UI.Si solo tiene la biblioteca central, básicamente está agregando otra lib. Si no tiene o no planea usar la interfaz de usuario de jQuery, echaría un vistazo a Moment.js. –

+2

@Colin, eso es lo que interpreté como "necesitarías el núcleo jQuery y el módulo de UI datepicker". – isherwood

2

Si sólo se necesita una vez, que es una exageración para cargar un plugin.

Para una fecha "dd/mm/aaaa", esto funciona para mí:

new Date(d.date.substring(6, 10),d.date.substring(3, 5)-1,d.date.substring(0, 2)); 

Sólo invierten mes y el día de dd/mm/aaaa, la sintaxis es new Date(y,m,d)

1

Uso momento js para cualquier operación fecha.

https://momentjs.com/

console.log(moment("Sunday, February 28, 2010").format('MM/DD/YYYY'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

Cuestiones relacionadas