Estoy tratando de convertir una cadena en el formato dd-mm-aaaa en un objeto de fecha en JavaScript usando lo siguiente:
var from = $("#datepicker").val();
var to = $("#datepickertwo").val();
var f = new Date(from);
var t = new Date(to);
("#datepicker").val()
contiene una fecha en el formato dd-mm-aaaa. Cuando hago lo siguiente, aparece la "Fecha inválida":
alert(f);
¿Esto se debe al símbolo '-'? ¿Cómo puedo superar esto?
javascript
date
usuario559142
fuente
fuente
Respuestas:
Dividido en "-"
Analiza la cuerda en las partes que necesitas:
Usar expresiones regulares
¿Por qué no usar regex?
Porque sabes que trabajarás en una cadena compuesta de tres partes, separadas por guiones.
Sin embargo, si estaba buscando esa misma cadena dentro de otra cadena, la expresión regular sería el camino a seguir.
Reutilizar
Debido a que está haciendo esto más de una vez en su código de muestra, y tal vez en otra parte de su base de código, envuélvalo en una función:
Utilizando como:
O si no te importa jQuery en tu función:
Utilizando como:
JavaScript moderno
Si puede utilizar JS más modernos, la desestructuración de matrices también es un buen toque:
fuente
ejemplo de expresión regular:
fuente
/
es delimitador y un año compuesto de 2 dígitos (o cualquier conteo mayor que 1):replace( /(\d{2})[-/](\d{2})[-/](\d+)/, "$2/$1/$3")
new Date( "23. 2. 15".replace( /(\d+)[^d]+(\d+)[^d]+(\d+)/, "$2/$1/$3") );
en.wikipedia.org/wiki/Date_format_by_countryOtra posibilidad:
Une los dígitos y reordenarlos
fuente
var date = new Date(numbers[2], numbers[1]-1, numbers[0]);
Usando el ejemplo moment.js :
fuente
fuente
$.datepicker.parseDate("dd-mm-yy", from);
para analizar correctamente una fecha como24-01-2017
, la documentación de chek datepicker en api.jqueryui.com/datepickerTambién puede escribir una fecha dentro de los paréntesis del
Date()
objeto, como estos:fuente
Use este formato:
myDate = new Date('2011-01-03'); // Mon Jan 03 2011 00:00:00
fuente
parseDate
función? ¿Es esa una función nativa de JavaScript?'2011-01-03'
y la hora UTC en00:00:00
. Entonces, si la zona horaria del usuario es menor que UTC, en realidad será el día anterior.En mi caso
Resultado: Lun Nov 02 2015 04:40:13 GMT + 0100 (CET) luego uso .getTime () para trabajar con milisegundos
fuente
La respuesta aceptada tiene un error
Considere si el selector de fecha contiene "77-78-7980" que obviamente no es una fecha válida. Esto resultaría en:
Lo cual probablemente no sea el resultado deseado.
La razón de esto se explica en el sitio de MDN :
Una mejor manera de resolver el problema es:
Esto le brinda la posibilidad de manejar entradas no válidas.
Por ejemplo:
fuente
Puedes usar una biblioteca externa para ayudarte.
http://www.mattkruse.com/javascript/date/source.html
También vea esto: Parse cadena de fecha y hora en JavaScript
fuente
Eche un vistazo a Datejs para todos esos problemas relacionados con fechas pequeñas. También podría resolver esto mediante la función parseDate
fuente
Podrías usar un Regexp.
fuente
así de simple, simplemente pase su fecha a js Date Object
fuente
new Date('30/12/2018').toLocaleDateString()
?? Eso devuelve Fecha inválida