yyyy node new from ejemplos convert javascript date type-conversion

javascript - new - node.js convert string to date format



Convertir una cadena a una fecha en JavaScript (30)

¿Cómo puedo convertir una cadena a una fecha en JavaScript?

var st = "date in some format" var dt = new date(); var dt_st= //st in date format same as dt


Las marcas de tiempo se deben convertir a un número

var ts = ''1471793029764''; ts = Number(ts); // cast it to a Number var date = new Date(ts); // works var invalidDate = new Date(''1471793029764''); // does not work. Invalid Date


Convertir a formato pt-BR:

var dateString = "13/10/2014"; var dataSplit = dateString.split(''/''); var dateConverted; if (dataSplit[2].split(" ").length > 1) { var hora = dataSplit[2].split(" ")[1].split('':''); dataSplit[2] = dataSplit[2].split(" ")[0]; dateConverted = new Date(dataSplit[2], dataSplit[1]-1, dataSplit[0], hora[0], hora[1]); } else { dateConverted = new Date(dataSplit[2], dataSplit[1] - 1, dataSplit[0]); }

Espero ayudar a alguien !!!


Debes hacer tu propia función . Esto será más conveniente . Aquí está el ejemplo. Puede modificarlo de acuerdo a su requerimiento.

const dateFormater = function(dt, seprator){ let monthStore = ["January","February","March","April","May","June", "July","August","September","October","November","December"]; const date = dt.split(seprator); //below choose month, day, year in the same order you passed in function as string const month = monthStore[date[0]-1]; const day = date[1]; const year = date[2]; const dateToReturn = month+'' ''+day+'' ''+year // you can change order to print as required return(dateToReturn) } var formatedDate = dateFormater(''12/11/2018'',''/''); // /m/d/y var formatedDate2 = dateFormater(''09-10-2018'',''-''); console.log(formatedDate); console.log(formatedDate2 )


El mejor formato de cadena para el análisis de cadenas es el formato ISO de fecha junto con el constructor de objetos Fecha de JavaScript.

Ejemplos de formato ISO: YYYY-MM-DD o YYYY-MM-DDTHH:MM:SS .

¡Pero espera! El solo uso del "formato ISO" no funciona de manera confiable por sí mismo. Las cadenas a veces se analizan como UTC y otras como hora local (según el proveedor y la versión del navegador). La mejor práctica siempre debe ser almacenar las fechas como UTC y realizar cálculos como UTC.

Para analizar una fecha como UTC, agregue una Z , por ejemplo: new Date(''2011-04-11T10:20:30Z'') .

Para mostrar una fecha en UTC, use .toUTCString() ,
para mostrar una fecha en la hora local del usuario, use .toString() .

Más información en MDN | Fecha y esta respuesta .

Para la compatibilidad anterior de Internet Explorer (las versiones de IE de menos de 9 no admiten el formato ISO en el constructor de fecha), debe dividir la representación de la cadena de fecha y hora en sus partes y luego puede usar el constructor utilizando partes de fecha y hora, por ejemplo: new Date(''2011'', ''04'' - 1, ''11'', ''11'', ''51'', ''00'') . Tenga en cuenta que el número del mes debe ser 1 menos.

Método alternativo - use una biblioteca apropiada:

También puede aprovechar la biblioteca momentjs.com que permite analizar la fecha con la zona horaria especificada.


He creado la función parseDateTime para convertir la cadena en un objeto de fecha y está funcionando en todos los navegadores (incluido el navegador IE), verifique si alguien lo requiere, consulte https://github.com/Umesh-Markande/Parse-String-to-Date-in-all-browser

function parseDateTime(datetime) { var monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; if(datetime.split('' '').length == 3){ var date = datetime.split('' '')[0]; var time = datetime.split('' '')[1].replace(''.00'',''''); var timearray = time.split('':''); var hours = parseInt(time.split('':'')[0]); var format = datetime.split('' '')[2]; var bits = date.split(//D/); date = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/ var day = date.getDate(); var monthIndex = date.getMonth(); var year = date.getFullYear(); if ((format === ''PM'' || format === ''pm'') && hours !== 12) { hours += 12; try{ time = hours+'':''+timearray[1]+'':''+timearray[2] }catch(e){ time = hours+'':''+timearray[1] } } var formateddatetime = new Date(monthNames[monthIndex] + '' '' + day + '' '' + year + '' '' + time); return formateddatetime; }else if(datetime.split('' '').length == 2){ var date = datetime.split('' '')[0]; var time = datetime.split('' '')[1]; var bits = date.split(//D/); var datetimevalue = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/ var day = datetimevalue.getDate(); var monthIndex = datetimevalue.getMonth(); var year = datetimevalue.getFullYear(); var formateddatetime = new Date(monthNames[monthIndex] + '' '' + day + '' '' + year + '' '' + time); return formateddatetime; }else if(datetime != ''''){ var bits = datetime.split(//D/); var date = new Date(bits[0], --bits[1], bits[2]); /* if you change format of datetime which is passed to this function, you need to change bits e.x ( bits[0], bits[1], bits[2 ]) position as per date, months and year it represent bits array.*/ return date; } return datetime; } var date1 = ''2018-05-14 05:04:22 AM''; // yyyy-mm-dd hh:mm:ss A var date2 = ''2018/05/14 05:04:22 AM''; // yyyy/mm/dd hh:mm:ss A var date3 = ''2018/05/04''; // yyyy/mm/dd var date4 = ''2018-05-04''; // yyyy-mm-dd var date5 = ''2018-05-14 15:04:22''; // yyyy-mm-dd HH:mm:ss var date6 = ''2018/05/14 14:04:22''; // yyyy/mm/dd HH:mm:ss console.log(parseDateTime(date1)) console.log(parseDateTime(date2)) console.log(parseDateTime(date3)) console.log(parseDateTime(date4)) console.log(parseDateTime(date5)) console.log(parseDateTime(date6)) **Output---** Mon May 14 2018 05:04:22 GMT+0530 (India Standard Time) Mon May 14 2018 05:04:22 GMT+0530 (India Standard Time) Fri May 04 2018 00:00:00 GMT+0530 (India Standard Time) Fri May 04 2018 00:00:00 GMT+0530 (India Standard Time) Mon May 14 2018 15:04:22 GMT+0530 (India Standard Time) Mon May 14 2018 14:04:22 GMT+0530 (India Standard Time)


He creado un violín para esto, puede usar la función toDate () en cualquier cadena de fecha y proporcionar el formato de fecha. Esto te devolverá un objeto Date. https://jsfiddle.net/Sushil231088/q56yd0rp/

"17/9/2014".toDate("dd/MM/yyyy", "/")


Hice esta función para convertir cualquier objeto Date en un objeto Date UTC.

function dateToUTC(date) { return new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds()); } dateToUTC(new Date());


ISO 8601-esque datestrings, tan excelente como es el estándar, todavía no son ampliamente compatibles.

Este es un gran recurso para averiguar qué formato de datstring debe usar:

http://dygraphs.com/date-formats.html

Sí, eso significa que su eliminación de datos podría ser tan simple como opuesta a

"2014/10/13 23:57:52" lugar de "2014-10-13 23:57:52"


Lamentablemente descubrí que

var mydate = new Date(''2014-04-03''); console.log(mydate.toDateString());

devuelve "mié abr 02 2014". Sé que suena loco, pero sucede para algunos usuarios.

La solución a prueba de balas es la siguiente:

var parts =''2014-04-03''.split(''-''); // Please pay attention to the month (parts[1]); JavaScript counts months from 0: // January - 0, February - 1, etc. var mydate = new Date(parts[0], parts[1] - 1, parts[2]); console.log(mydate.toDateString());


Otra forma de hacerlo:

String.prototype.toDate = function(format) { format = format || "dmy"; var separator = this.match(/[^0-9]/)[0]; var components = this.split(separator); var day, month, year; for (var key in format) { var fmt_value = format[key]; var value = components[key]; switch (fmt_value) { case "d": day = parseInt(value); break; case "m": month = parseInt(value)-1; break; case "y": year = parseInt(value); } } return new Date(year, month, day); }; a = "3/2/2017"; console.log(a.toDate("dmy")); // Date 2017-02-03T00:00:00.000Z


Pásalo como argumento a Date ():

var st = "date in some format" var dt = new Date(st);

Puede acceder a la fecha, mes, año usando, por ejemplo: dt.getMonth() .


Para aquellos que buscan una solución pequeña e inteligente:

String.prototype.toDate = function(format) { var normalized = this.replace(/[^a-zA-Z0-9]/g, ''-''); var normalizedFormat= format.toLowerCase().replace(/[^a-zA-Z0-9]/g, ''-''); var formatItems = normalizedFormat.split(''-''); var dateItems = normalized.split(''-''); var monthIndex = formatItems.indexOf("mm"); var dayIndex = formatItems.indexOf("dd"); var yearIndex = formatItems.indexOf("yyyy"); var hourIndex = formatItems.indexOf("hh"); var minutesIndex = formatItems.indexOf("ii"); var secondsIndex = formatItems.indexOf("ss"); var today = new Date(); var year = yearIndex>-1 ? dateItems[yearIndex] : today.getFullYear(); var month = monthIndex>-1 ? dateItems[monthIndex]-1 : today.getMonth()-1; var day = dayIndex>-1 ? dateItems[dayIndex] : today.getDate(); var hour = hourIndex>-1 ? dateItems[hourIndex] : today.getHours(); var minute = minutesIndex>-1 ? dateItems[minutesIndex] : today.getMinutes(); var second = secondsIndex>-1 ? dateItems[secondsIndex] : today.getSeconds(); return new Date(year,month,day,hour,minute,second); };

Ejemplo:

"22/03/2016 14:03:01".toDate("dd/mm/yyyy hh:ii:ss"); "2016-03-29 18:30:00".toDate("yyyy-mm-dd hh:ii:ss");


Para convertir una cadena hasta la fecha en js i use http://momentjs.com/

moment().format(''MMMM Do YYYY, h:mm:ss a''); // August 16th 2015, 4:17:24 pm moment().format(''dddd''); // Sunday moment().format("MMM Do YY"); // Aug 16th 15 moment().format(''YYYY [escaped] YYYY''); // 2015 escaped 2015 moment("20111031", "YYYYMMDD").fromNow(); // 4 years ago moment("20120620", "YYYYMMDD").fromNow(); // 3 years ago moment().startOf(''day'').fromNow(); // 16 hours ago moment().endOf(''day'').fromNow(); // in 8 hours


Puede usar expresiones regulares para analizar la cadena para detallar la hora y luego crear la fecha o cualquier formato de devolución como:

//example : let dateString = "2018-08-17 01:02:03.4" function strToDate(dateString){ let reggie = /(/d{4})-(/d{2})-(/d{2}) (/d{2}):(/d{2}):(/d{2}).(/d{1})/ , [,year, month, day, hours, minutes, seconds, miliseconds] = reggie.exec(dateString) , dateObject = new Date(year, month-1, day, hours, minutes, seconds, miliseconds); return dateObject; } alert(strToDate(dateString));


Puedes probar esto:

function formatDate(userDOB) { const dob = new Date(userDOB); const monthNames = [ ''January'', ''February'', ''March'', ''April'', ''May'', ''June'', ''July'', ''August'', ''September'', ''October'', ''November'', ''December'' ]; const day = dob.getDate(); const monthIndex = dob.getMonth(); const year = dob.getFullYear(); // return day + '' '' + monthNames[monthIndex] + '' '' + year; return `${day} ${monthNames[monthIndex]} ${year}`; } console.log(formatDate(''1982-08-10''));


Sólo new Date(st);

Suponiendo que es el formato adecuado.


Si desea convertir desde el formato "dd / MM / aaaa". Aquí hay un ejemplo:

var pattern = /^(/d{1,2})//(/d{1,2})//(/d{4})$/; var arrayDate = stringDate.match(pattern); var dt = new Date(arrayDate[3], arrayDate[2] - 1, arrayDate[1]);

Esta solución funciona en versiones de IE inferiores a 9.


Si necesita verificar el contenido de la cadena antes de convertir al formato de fecha:

// Convert ''M/D/YY'' to Date() mdyToDate = function(mdy) { var d = mdy.split(/[///-/.]/, 3); if (d.length != 3) return null; // Check if date is valid var mon = parseInt(d[0]), day = parseInt(d[1]), year= parseInt(d[2]); if (d[2].length == 2) year += 2000; if (day <= 31 && mon <= 12 && year >= 2015) return new Date(year, mon - 1, day); return null; }


Si puede usar la excelente biblioteca de momentjs.com (por ejemplo, en un proyecto Node.js), puede analizar fácilmente su fecha usando, por ejemplo,

var momentDate = moment("2014-09-15 09:00:00");

y puede acceder al objeto fecha JS a través de

momentDate ().toDate();


También puede hacer: mydate.toLocaleDateString ();



moment.js ( momentjs.com ) es un paquete completo y bueno para fechas de uso y admite cadenas ISO 8601 .

Usted podría agregar la fecha de cadena y el formato.

moment("12-25-1995", "MM-DD-YYYY");

Y puedes comprobar si una fecha es válida.

moment("not a real date").isValid(); //Returns false

Consulte la documentación http://momentjs.com/docs/#/parsing/string-format/

Recomendación: Recomiendo usar un paquete para fechas que contengan muchos formatos, ya que la zona horaria y la gestión del tiempo de los formatos es realmente un gran problema, en este momento j resuelven muchos formatos. Podría analizar fácilmente una fecha desde una cadena simple hasta la fecha, pero creo que es un trabajo difícil admitir todos los formatos y variaciones de fechas.


usa este código: (mi problema fue resuelto con este código)

function dateDiff(date1, date2){ var diff = {} // Initialisation du retour var tmp = date2 - date1; tmp = Math.floor(tmp/1000); // Nombre de secondes entre les 2 dates diff.sec = tmp % 60; // Extraction du nombre de secondes tmp = Math.floor((tmp-diff.sec)/60); // Nombre de minutes (partie entière) diff.min = tmp % 60; // Extraction du nombre de minutes tmp = Math.floor((tmp-diff.min)/60); // Nombre d''heures (entières) diff.hour = tmp % 24; // Extraction du nombre d''heures tmp = Math.floor((tmp-diff.hour)/24); // Nombre de jours restants diff.day = tmp; return diff;

}


Date.parse casi te consigue lo que quieres. Se ahoga en la parte am / pm , pero con algo de piratería puede hacer que funcione:

var str = ''Sun Apr 25, 2010 3:30pm'', timestamp; timestamp = Date.parse(str.replace(/[ap]m$/i, '''')); if(str.match(/pm$/i) >= 0) { timestamp += 12 * 60 * 60 * 1000; }


new Date(2000, 10, 1) le dará "Mié 01 de noviembre 2000 00:00:00 GMT + 0100 (CET)"

Mira que 0 por mes te da enero.


var a = "13:15" var b = toDate(a, "h:m") alert(b); function toDate(dStr, format) { var now = new Date(); if (format == "h:m") { now.setHours(dStr.substr(0, dStr.indexOf(":"))); now.setMinutes(dStr.substr(dStr.indexOf(":") + 1)); now.setSeconds(0); return now; } else return "Invalid Format"; }


//little bit of code for Converting dates var dat1 = document.getElementById(''inputDate'').value; var date1 = new Date(dat1)//converts string to date object alert(date1); var dat2 = document.getElementById(''inputFinishDate'').value; var date2 = new Date(dat2) alert(date2);


function stringToDate(_date,_format,_delimiter) { var formatLowerCase=_format.toLowerCase(); var formatItems=formatLowerCase.split(_delimiter); var dateItems=_date.split(_delimiter); var monthIndex=formatItems.indexOf("mm"); var dayIndex=formatItems.indexOf("dd"); var yearIndex=formatItems.indexOf("yyyy"); var month=parseInt(dateItems[monthIndex]); month-=1; var formatedDate = new Date(dateItems[yearIndex],month,dateItems[dayIndex]); return formatedDate; } stringToDate("17/9/2014","dd/MM/yyyy","/"); stringToDate("9/17/2014","mm/dd/yyyy","/") stringToDate("9-17-2014","mm-dd-yyyy","-")


var date = new Date(year, month, day);

o

var date = new Date(''01/01/1970'');

la cadena de fecha en formato ''01 -01-1970 ''no funcionará en FireFox, por lo que es mejor usar "/" en lugar de "-" en la cadena de formato de fecha.


var st = "26.04.2013"; var pattern = /(/d{2})/.(/d{2})/.(/d{4})/; var dt = new Date(st.replace(pattern,''$3-$2-$1''));

Y la salida será:

dt => Date {Fri Apr 26 2013}