Detecta múltiples idiomas y trae varios sets de colores
Con la libreria momentjs
body =Buffer.concat(body).toString();let fecha =moment(body,"DD/MM/YYYY");let dia = fecha.format("dddd");res.end(dia);
Gracias 😄
const http =require("http");const moment =require("moment");const server = http.createServer();server.on("request",(req, res)=>{if(req.method==="POST"&& req.url=="/echo"){let body =[]; req
.on("data", chunk =>{ body.push(chunk);}).on("end",()=>{ res.writeHead(200,{"Content-type":"text/plain"}); body =Buffer.concat(body).toString();if(!moment(body,"YYYY-MM-DD").isValid()){ res.end("no es un formato valido.Formato esperado YYYY-MM-DD");}else{var weekDayName =moment(body).format("dddd"); res.end("Tu dia de Nacimiento es:"+ weekDayName);}});}else{ res.statusCode=404; res.end();}});server.listen(8002);console.log("Servidor enla url http://localhost:8002");
Utilizando el Modulo Moment
// El modulo moment es genialconst moment =require('moment');let fecha =moment(body);res.end(fecha.format('dddd'));// el formato 'dddd' es para que solo muestre el dia en texto.
Mi aporte
const http =require('http');const server = http.createServer();server.on('request',(req, res)=>{let birthday =[]; req.on('data',chunk=> birthday.push(chunk.toString())); req.on('end',()=>{ res.writeHead(200,{'Content-Type':'text/plain'}); res.end(`Tu día de nacimiento es: ${getDayOfBirthday(birthday)}`);})});functiongetDayOfBirthday(date){const days =['Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo'];const birthday =newDate(date);return days[birthday.getDay()]}server.listen(8001);console.log('Servidor en la url http://localhost:8001')
Si me permites corregirte el arreglo de días empieza en domingo segun la doc de MDN. Pero me gusto mucho tú solución.
si y muchas gracias por la correción
Good job...
Pues acá está mi servidor que valida una fecha
const http =require('http');const server = http.createServer();server.on('request',(req,res)=>{if(req.method==='POST'&& req.url=='/'){let body=[];const days=['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'];const months =['enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre']; req.on('data',(chunk)=>{ body.push(chunk);}).on('end',()=>{ res.writeHead(200,{'Content-Type':'text/plain'}) body=Buffer.concat(body).toString();const birthday=newDate(body)if(birthday.getFullYear()){ res.end(`Naciste un ${days[birthday.getDay()]}, ${birthday.getDate()+1} de ${months[birthday.getMonth()]} de ${birthday.getFullYear()}`);}else{ res.end(`Inserta una fecha correcta con el formato YYYY-MM-DD`)}})}else{ res.statusCode=404; res.end();}})server.listen(8000);console.log('servidor en la url http://localhost:8000')```
Al definir birthday en tu código, new y Date quedan unidos (newDate), por lo que no corre el código cuando uno copia y pega.
Es un problema con el código de platzi, se tiene que separar, jaja, no lo diseñé así
¿Pregunta?
¿En que parte del evento de la variable es mejor hacer la lógica que se desea procesar? ¿En el 'data? ¿En el ‘end’? ¿y por que?. ¡Gracias de antemano!
Depende la necesidad de tu lógica, si es algo que puedes ir aplicando a medida que recibes los datos, puedes definitivamente hacerlo ahi. Si es algo que solo se puede hacer cuando tengas todo el set de datos deberías usar el end.
Solución a mi reto:
//formato de fecha de entrada: opcion 1: 10-16-2019, opcion2: 2019/10/16const http =require('http');const server = http.createServer();const weekday =newArray(7);weekday[0]="Domingo";weekday[1]="Lunes";weekday[2]="Martes";weekday[3]="Miercoles";weekday[4]="Jueves";weekday[5]="Viernes";weekday[6]="Sabado";server.on('request',(req, res)=>{if(req.method=='POST'&& req.url==='/birthday'){let body =[] req.on('data',chunk=>{ body.push(chunk)}).on('end',()=>{ res.writeHead(200,{'Content-Type':'text/plain'})let dayOfBirth =newDate(body)console.log(weekday[dayOfBirth.getDay()]) body =Buffer.concat(body).toString() res.end(body)})}else{ res.statusCode=404 res.end()}})server.listen(8001)console.log('servidor en la url: http://localhost:8001')```
🤓
const http =require('http');const server = http.createServer();const semana =['Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado'];server.on('request',(req, res)=>{if(req.method==='POST'&& req.url=='/adivinarDia'){let body =[]; req.on('data',chunk=>{ body.push(chunk);}).on('end',()=>{ body =Buffer.concat(body).toString();const date =newDate(body);let diaSemana = semana[date.getDay()]; res.writeHead(200,{"Content-type":"text-plain"}); res.end(`El dia de mi nacimiento fue un ${diaSemana}`);})}else{ res.status=404; res.end();}})constPORT=3003;server.listen(PORT,()=>{console.log(`Eschuchando en el puerto ${PORT}`)});
El challenge me quedo de la siguiente manera, ya que no encontre el como darle formato al input que requiere Date.getDay(), y asi obtener el dia en menos lineas de codigo.
Despues de ver el video nuevamente, pude entender un poco mejor algunas cosas que no tenia claro, y asi hacer un poco mas legible el codigo.
Les comparto mi reto, tuve que modificar un poco para que se vea bien en los aportes de platzi, pueden utilizarlo de referencia, espero les ayude :)
//obtain http module for create the serverconst http =require('http')//create the server and assign to constconst server = http.createServer()constisValidMethod=(req, method)=>{return req.method=== method ?true:false}constisValidUrl=(req, url)=>{return req.url== url ?true:false}constgetWeekDay=date=>{const weekDays =['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday']const message ='Your were born on'return`${message}${weekDays[date.getDay()]}`}//handle eventsserver.on('request',(request, response)=>{const okMethod =isValidMethod(request,'POST')const okUrl =isValidUrl(request,'/challenge')const content ={'Content-Type':'text/plain'}if(okMethod && okUrl){let body =newArray()//handle data request
.on('data',chunk=>{/*chunk is the data that we sent
in the request*/ body.push(chunk)}).on('end',()=>{//now body contains your birth date body =Buffer.concat(body).toString()let birthDate =newDate(body) response.writeHeader(200, content) response.end(getWeekDay(birthDate))})}else{ response.writeHeader(400, content) response.end('404 not found :C')}})server.listen(8002)console.log('running on http://localhost:8002/challenge')/*
in posttman try with your birthdate
like yyyy mm dd
1994 12 09
*/
const http =require('http');const server = http.createServer();const days =['Domingo','Lunes','Martes','Miercoles','Jueves','Viernes','Sabado'];constgetDayName=function(chunk){if(Date.parse(chunk)){let date =newDate(chunk);let dayNumber = date.getDay();return days[dayNumber];}else{return'El formato de fecha no concuerda, intenta nuevamente.';}}server.on('request',(req, res)=>{if(req.method==='POST'){let body =[]; req.on('data',chunk=>{let dayName =getDayName(chunk); body.push(dayName);}).on('end',()=>{ res.writeHead(200,{'Content-Type':'text-plain'}); res.end(body.toString());});};});server.listen(8003);console.log('Cumpleserver en la url http://localhost:8003')```
Magnífico!! Buen trabajo.
Muchachos, no entiendo porque cuando activo el servidor y envio un PUT con postman SIEMPRE me retorna como dia de cumpleaños miercoles.
¿Qué error estoy cometiendo que no veo?
De antemano gracias por su apoyo.
/*
Crear un servidor que reciba mi fecha de cumpleaños
y devuelva el dia de la semana en que naci.
*/const http =require("http");const server = http.createServer();functiongetStringDayFromDate(dateInput){const date =newDate(dateInput);const weekDay = date.getDay();const options ={weekday:'long'}let weekDayFormatted =newIntl.DateTimeFormat('es-CL',options).format(weekDay);console.log(date, weekDay, weekDayFormatted);return weekDayFormatted;}server.on("request",(req,res)=>{if(req.method==="POST"&& req.url==="/birthday"|| req.url==="/cumpleanos"){let body =[]; req.on("data",chunk=>{//December 25, 1995 23:15:30 chunk = chunk.toString();const weekDayFormatted =getStringDayFromDate(chunk); body.push(`Amigo mío, cumpliste año un ${weekDayFormatted}`);}).on("end",()=>{ res.writeHead(200,{"Content-Type":"text/plain"}); res.end(body[0]);});}});server.listen(8001);console.log("Server in URL http://localhost:8001");
El método PUT es para realizar actualizaciones, debes de utilizar POST.
Tienes razón! Escribi "PUT" en mi descripción del problema, pero en el códiigo como puedes ver en realizada coloqué POST.
Comparto mi tarea realizada!
Va mi solución.
/**
* Este servidor echo, tiene como finalidad recibir datos (fecha de nacimiento) mediante POST
* y responder con el nombre del día que le corresponde a dicha fecha
*/const http =require("http");const server = http.createServer();server.on("request",(req, res)=>{if(req.method==="POST"&& req.url==="/birthday"){let birthday =[]; req
.on("data",chunk=>{ birthday.push(chunk);}).on("end",()=>{ res.writeHeader(200,{"Content-type":"text/plain"}); birthday =Buffer.concat(birthday).toString();const day =getDayBirth(birthday); res.end(`Tu naciste un día ${day}`);});}});server.listen(3000,()=>{console.log("Servidor escuchando en http://localhost:3000");});functiongetDayBirth(birthday){// Tomando como base que la fecha me llega en YYYY-mm-ddconst data = birthday.split("-");// Construir una fecha valida. el mes 0 es Eneroconst newdate =newDate(Number(data[0]),Number(data[1])-1,Number(data[2]));switch(newdate.getDay()){case0:return"Domingo";case1:return"Lunes";case2:return"Martes";case3:return"Miércoles";case4:return"Jueves";case5:return"Viernes";case6:return"Sábado";}}
const http =require('http');const server = http.createServer();server.on("request",(req, res)=>{if(req.method==='POST'&& req.url=="/echo"){let body =[];
req
.on('data',chunck=>{ body.push(chunck)}).on('end',()=>{ res
.writeHead(200,'Content-Type','text/plain'); body =Buffer.concat(body).toString().split('-');
res
.end(returnDayOfWeekend(body));})}else{ res.statusCode=404; res.end();}});functionreturnDayOfWeekend(date){ date =newDate(date[0], date[1]-1, date[2]);let day ='';switch(String(date.getDay())){case'0': day ='Domingo'break;case'1': day ='Lunes'break;case'2': day ='Martes'break;case'3': day ='Miercoles'break;case'4': day ='Jueves'break;case'5': day ='Viernes'break;case'6': day ='Sabado'break;}return`El dia de tu cumpleaños es el dia ${day}`;}constPORT='8001'server.listen(PORT);console.log(`Servidor iniciado en la url http://localhost:${PORT}`);
const http =require('http');const server = http.createServer();server.on('request',(req, res)=>{if(req.method=='POST'&& req.url==='/edad'){let body =[];let semana =['Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo']; req
.on('data',chunck=>{ body.push(chunck);}).on('end',()=>{ res.writeHeader(200,{"Content-Type":"text/plain"});let edad =newDate(body); edad = semana[edad.getDay()]; res.end('Naciste el día '+ edad);});}else{ res.statusCode=404; res.end();}});server.listen(3001);console.log('Servidor en la url http://localhost:3001');
Es frustrante esforzarte en completar los retos y cuando quieres compartir tus resultados. La página no acepta tus comentarios porque "Tu comentario contiene enlaces a sitios no seguros".. Ojalá puedan mejorar eso. Uno sólo quiere compartir su código.
Es por el console.log con el < h t t p : // local host : 80 00 >