javascript - yyyy - Convertir cadena dd-mm-aaaa hasta la fecha
js date to string dd mm yyyy (12)
Eche un vistazo a Datejs para todos los asuntos relacionados con la fecha insignificante. Usted podría resolver esto por la función parseDate también
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, obtengo "Fecha no válida":
alert(f);
¿Esto es por el símbolo ''-''? ¿Cómo puedo superar esto?
En mi caso
new Date("20151102034013".replace(/(/d{4})(/d{2})(/d{2})(/d{2})(/d{2})(/d{2})/, "$1-$2-$3T$4:$5:$6"))
Resultado: lun 02 nov 2015 04:40:13 GMT + 0100 (CET) luego uso .getTime () para trabajar con milisegundos
Otra posibilidad:
var from = "10-11-2011";
var numbers = from.match(//d+/g);
var date = new Date(numbers[2], numbers[0]-1, numbers[1]);
Haga coincidir los dígitos y vuelva a ordenarlos
Podría usar un Regexp.
var result = /^(/d{2})-(/d{2})-(/d{4})$/.exec($("#datepicker").val());
if (result) {
from = new Date(
parseInt(result[3], 10),
parseInt(result[2], 10) - 1,
parseInt(result[1], 10)
);
}
Puede usar una biblioteca externa para ayudarlo.
http://www.mattkruse.com/javascript/date/source.html
getDateFromFormat(val,format);
También vea esto: Parse DateTime string en JavaScript
También puede escribir una fecha dentro del paréntesis del objeto Date()
, como estos:
new Date("Month dd, yyyy hh:mm:ss")
new Date("Month dd, yyyy")
new Date(yyyy,mm,dd,hh,mm,ss)
new Date(yyyy,mm,dd)
new Date(milliseconds)
Usando el ejemplo de moment.js :
var from = ''11-04-2017'' // OR $("#datepicker").val();
var milliseconds = moment(from, "DD-MM-YYYY").format(''x'');
var f = new Date(milliseconds)
Utilice este formato: myDate = new Date(''2011-01-03''); // Mon Jan 03 2011 00:00:00
myDate = new Date(''2011-01-03''); // Mon Jan 03 2011 00:00:00
ejemplo de expresión regular:
new Date( "13-01-2011".replace( /(/d{2})-(/d{2})-(/d{4})/, "$2/$1/$3") );
Dividido en "-"
Analice la cadena en las partes que necesita:
var from = $("#datepicker").val().split("-")
var f = new Date(from[2], from[1] - 1, from[0])
Usa expresiones regulares
var date = new Date("15-05-2018".replace( /(/d{2})-(/d{2})-(/d{4})/, "$2/$1/$3"))
¿Por qué no usar Regex?
Porque sabes que trabajarás en una cadena compuesta de tres partes, separadas por guiones.
Sin embargo, si estabas buscando la misma cadena dentro de otra cadena, Regex 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 otro lugar en su base de código, envuélvalo en una función:
function toDate(dateStr) {
var parts = dateStr.split("-")
return new Date(parts[2], parts[1] - 1, parts[0])
}
Usando como:
var from = $("#datepicker").val()
var to = $("#datepickertwo").val()
var f = toDate(from)
var t = toDate(to)
O si no te importa jQuery en tu función:
function toDate(selector) {
var from = $(selector).val().split("-")
return new Date(from[2], from[1] - 1, from[0])
}
Usando como:
var f = toDate("#datepicker")
var t = toDate("#datepickertwo")
JavaScript moderno
Si puede usar JS más moderno, la desestructuración de matrices también es un buen toque:
function toDate(dateStr) {
const [day, month, year] = dateStr.split("-")
return new Date(year, month - 1, day)
}
new Date().toLocaleDateString();
tan simple como eso, solo pase su fecha a js Date Object
var from = $("#datepicker").val();
var f = $.datepicker.parseDate("d-m-Y", from);