change - cómo analizar una cadena de fecha formateada "dd/mm/aaaa" o "dd-mm-aaaa" o "dd-mmm-aaaa" usando JavaScript o jQuery
short date javascript (5)
Es posible que desee utilizar la biblioteca auxiliar como http://momentjs.com/ que envuelve el objeto de fecha nativo de JavaScript para facilitar las manipulaciones.
Entonces puedes hacer cosas como:
var day = moment("12-25-1995", "MM-DD-YYYY");
o
var day = moment("25/12/1995", "DD/MM/YYYY");
luego operar en la fecha
day.add(''days'', 7)
y para obtener la fecha nativa de javascript
day.toDate();
Posible duplicado:
¿Está extendiendo Date.parse de JavaScript para permitir DD / MM / YYYY (fechas formateadas fuera de EE. UU.)?
Convertir cadena dd-mm-aaaa hasta la fecha
Introdujo una fecha en el cuadro de texto, por ejemplo: 05/09/1985 , y yo quería convertirlo al formato 05-Sep-1985 (dd-MMM-aaaa). ¿Cómo lograría esto? Tenga en cuenta que el formato de origen puede ser dd-mm-yyyy
o dd/mm/yyyy
o dd-mmm-yyyy
.
Fragmento de código:
function GetDateFormat(controlName) {
if ($(''#'' + controlName).val() != "") {
var d1 = Date.parse($(''#'' + controlName).val());
if (d1 == null) {
alert(''Date Invalid.'');
$(''#'' + controlName).val("");
}
var array = d1.toString(''dd-MMM-yyyy'');
$(''#'' + controlName).val(array);
}
}
Este código devuelve 09 de mayo de 1985, pero quiero 05-Sep-1985 . Gracias.
Prueba esto:
function GetDateFormat(controlName) {
if ($(''#'' + controlName).val() != "") {
var d1 = Date.parse($(''#'' + controlName).val().toString().replace(/([0-9]+)//([0-9]+)/,''$2/$1''));
if (d1 == null) {
alert(''Date Invalid.'');
$(''#'' + controlName).val("");
}
var array = d1.toString(''dd-MMM-yyyy'');
$(''#'' + controlName).val(array);
}
}
El RegExp reemplaza .replace(/([0-9]+)//([0-9]+)/,''$2/$1'')
cambio día / mes posición.
Vea esto http://blog.stevenlevithan.com/archives/date-time-format
puedes hacer cualquier cosa con la fecha.
archivo: http://stevenlevithan.com/assets/misc/date.format.js
agregue esto a su código html usando la etiqueta de script y para usar puede usarlo como:
var now = new Date();
now.format("m/dd/yy");
// Returns, e.g., 6/09/07
Date.parse
reconoce solo formatos específicos, y no tiene la opción de decirle cuál es su formato de entrada. En este caso, cree que la entrada está en el formato mm/dd/yyyy
, por lo que el resultado es incorrecto.
Para solucionar esto, necesita analizar la entrada usted mismo (por ejemplo, con String.split
) y luego construir manualmente un objeto Date
, o usar una biblioteca más completa como DateJS .
Ejemplo para el análisis manual
var input = $(''#'' + controlName).val();
var parts = str.split("/");
var d1 = new Date(Number(parts[2]), Number(parts[1]) - 1, Number(parts[0]));
Ejemplo usando date.js:
var input = $(''#'' + controlName).val();
var d1 = Date.parseExact(input, "d/M/yyyy");
Actualizar
A continuación has dicho:
Lo sentimos, no puedo predecir el formato de fecha antes, debe ser como dd-mm-aaaa o dd / mm / aaaa o dd-mmm-aaaa formato, finalmente quería convertir todo este formato a formato dd-MMM-aaaa.
Eso cambia completamente la pregunta. Será mucho más complejo si no puedes controlar el formato. No hay nada incorporado en JavaScript que le permita especificar un formato de fecha. Oficialmente, el único formato de fecha soportado por JavaScript es una versión simplificada de ISO-8601 : yyyy-mm-dd
, aunque en la práctica casi todos los navegadores también admiten yyyy/mm/dd
. Pero aparte de eso, tiene que escribir el código usted mismo o (y esto tiene mucho más sentido) usar una buena biblioteca. Probablemente usaría una biblioteca como http://momentjs.com/ o DateJS (aunque DateJS no se ha mantenido en años).
Respuesta original :
Si el formato es siempre dd/mm/yyyy
, entonces esto es trivial:
var parts = str.split("/");
var dt = new Date(parseInt(parts[2], 10),
parseInt(parts[1], 10) - 1,
parseInt(parts[0], 10));
split
divide una cadena en el delimitador dado. Luego usamos parseInt
para convertir las cadenas en números, y usamos el new Date
constructor de new Date
para construir una Date
partir de esas partes: la tercera parte será el año, la segunda parte del mes y la primera parte del día. Date
utiliza números de mes basados en cero, por lo que tenemos que restar uno del número de mes.