Foros del Web » Programando para Internet » Javascript »

convertir de string a objeto new Date

Estas en el tema de convertir de string a objeto new Date en el foro de Javascript en Foros del Web. hola tengo en una variable toda estas fechas, ahora necesito imprimirlas en un calendario pero para que me funcione estas fechas deben ser objetos no ...
  #1 (permalink)  
Antiguo 26/05/2016, 14:26
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
convertir de string a objeto new Date

hola
tengo en una variable toda estas fechas,

ahora necesito imprimirlas en un calendario
pero para que me funcione estas fechas deben ser objetos
no string,
hay alguna forma de convertirlas
para qeu funcionen como fechas reales?



fechas = 'new Date(2016,5,19),new Date(2016,5,16),new Date(2016,5,13),new Date(2016,5,23),new Date(2016,6,22),new Date(2016,6,27),new Date(2016,6,30),new Date(2016,5,31),new Date(2016,4,30),new Date(2016,4,9),new Date(2016,4,3),new Date(2016,5,15),new Date(2016,5,17),new Date(2016,5,12),new Date(2016,5,20),new Date(2016,5,10)'
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #2 (permalink)  
Antiguo 26/05/2016, 15:33
 
Fecha de Ingreso: junio-2004
Mensajes: 621
Antigüedad: 19 años, 10 meses
Puntos: 25
Respuesta: convertir de string a objeto new Date

Hola,
La verdad es que tiene una forma un tanto peculiar de almacenar las fechas.

Me voy a tomar la licencia de separar las fechas por una coma y un espacio para que sea más sencillo:

Código:
fechas = 'new Date(2016,5,19), new Date(2016,5,16), new Date(2016,5,13), new Date(2016,5,23), new Date(2016,6,22), new Date(2016,6,27), new Date(2016,6,30), new Date(2016,5,31), new Date(2016,4,30), new Date(2016,4,9), new Date(2016,4,3), new Date(2016,5,15), new Date(2016,5,17), new Date(2016,5,12), new Date(2016,5,20), new Date(2016,5,10)'
Ahora, puedo hacer un split por ", " y convertir esa cadena en un array, y acto seguido, aplicar eval sobre cada elemento del array, convirtiendo el array en un array de objetos fecha.

Código:
var aFechas = fechas.split(", ").map(eval)
.

De esta forma en aFechas[0] es un Date.

Espero haberte ayudado.

Un saludo
__________________
eContento
- Mis artículos y tutoriales
- Mis jsfiddles
  #3 (permalink)  
Antiguo 27/05/2016, 14:35
Avatar de lexus  
Fecha de Ingreso: enero-2002
Ubicación: Cali - Colombia
Mensajes: 2.234
Antigüedad: 22 años, 3 meses
Puntos: 4
Respuesta: convertir de string a objeto new Date

hola gracias por responder tan rapido

la verdad esas fechas estan almacenadas en una base de datos mysql y se almacenan como fechas
sino que al ser procesadas en el servidor y traerlas con ajax las traje con ese formato,
pero las puedo traer como fechas normales.

el problema viene aqui:
tengo un calendario y me exige que le pase las fechas como
new Date(2016,5,19),
new Date(2016,5,16)

te pongo un ejemplo.. lo qeu no se es que no puedo poner un ciclo (for) dentro de esta parte porque me marca error entonces no se me ocurre como hacer


Código Javascript:
Ver original
  1. var monthNames = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto' , 'Septiembre' , 'Octubre', 'Noviembre', 'Diciembre'];
  2.     var calendarInline = myApp.calendar({
  3.     container: '#calendar-inline-container',
  4.     value: [new Date()],
  5.     weekHeader: true,
  6.     firstDay: 0,
  7.     direction:'vertical',
  8.     events: [
  9.         new Date(2016, 0, 1),
  10.         new Date(2016, 0, 5)
  11.     ],
  12.     toolbarTemplate:

en donde dice events: [ aqui ]
debo hacer un for donde traigo todas mis fechas por el ajax, las habia almacenado en una variable como comente arriba, pero al ponerlas dentro de ese events, como es un string, no hace nada, no lo reconoce como fechas

que me aconsejas
__________________
Control de Visitantes, Control de Accesos, Minutas digitales, Manejo de Correspondencia
http://www.controldevisitantes.com
  #4 (permalink)  
Antiguo 27/05/2016, 15:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: convertir de string a objeto new Date

En PHP puedes formar un arreglo con las fechas (como cadenas de caracteres), para luego retornar la respuesta como un objeto JSON. En la llamada de retorno de la petición asíncrona (AJAX), lo parsearías para poder manipularlo como un objeto literal y así podrías recorrerlo para formar un nuevo arreglo en el que cada elemento será un objeto Date con cada una de las fechas recibidas.

Código PHP:
Ver original
  1. //Simulación de la obtención de fechas de una base de datos
  2. $consulta = 'SELECT campoFecha FROM tabla';
  3. $resultados = mysqli_query($variableDeConexion, $consulta) or exit(mysqli_error($variableDeConexion));
  4. $fechas = [];
  5. if (mysqli_num_rows($resultados)){    
  6.     while ($registros = mysqli_fetch_assoc($resultados)){
  7.         $fechas[] = $registros['campoFecha'];
  8.     }
  9.     mysqli_free_result($resultados);
  10. }
  11. mysqli_close($variableDeConexion);
  12. echo json_encode($fechas);

Código Javascript:
Ver original
  1. //Método personalizado para obtener un objeto Date válido con las fechas recibidas
  2. Date.fechaValida = function(date){
  3.     var old = date.split('-'), day = old[2], month = old[1], year = old[0];
  4.     return new Date(year, month, day);
  5. };
  6.  
  7. //Simulación de la llamada de retorno de la petición asíncrona (AJAX)
  8. ajax. addEventListener("load", function(){
  9.     if (this.status == 200){
  10.         var fechasString = JSON.parse(this.responseText), fechasDate = [];
  11.         for (var i in fechasString){
  12.             fechasDate.push(Date.fechaValida(fechasString[i]));
  13.         }
  14.  
  15.         //Tu código
  16.         var monthNames = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto' , 'Septiembre' , 'Octubre', 'Noviembre', 'Diciembre'],
  17.             calendarInline = myApp.calendar({
  18.                 container: '#calendar-inline-container',
  19.                 value: [new Date()],
  20.                 weekHeader: true,
  21.                 firstDay: 0,
  22.                 direction: 'vertical',
  23.                 events: fechasDate, //Asignas el arreglo de objetos Date
  24.                 //...
  25.             });
  26. }, false);

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 29/05/2016, 11:51
 
Fecha de Ingreso: mayo-2014
Mensajes: 44
Antigüedad: 9 años, 10 meses
Puntos: 10
Respuesta: convertir de string a objeto new Date

Cierto que es un tanto extraño tener así las fechas, pero bueno respondiendo a tu pregunta, nada te impide hacer lo siguiente:

Código Javascript:
Ver original
  1. var fechas = 'new Date(2016,5,19),new Date(2016,5,16),new Date(2016,5,13),new Date(2016,5,23),new Date(2016,6,22),new Date(2016,6,27),new Date(2016,6,30),new Date(2016,5,31),new Date(2016,4,30),new Date(2016,4,9),new Date(2016,4,3),new Date(2016,5,15),new Date(2016,5,17),new Date(2016,5,12),new Date(2016,5,20),new Date(2016,5,10)';
  2.  
  3. var monthNames = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto' , 'Septiembre' , 'Octubre', 'Noviembre', 'Diciembre'];
  4. var calendarInline = myApp.calendar({
  5.     container: '#calendar-inline-container',
  6.     value: [new Date()],
  7.     weekHeader: true,
  8.     firstDay: 0,
  9.     direction:'vertical',
  10.     events: (function () {
  11.                 return fechas.replace(/\)\,new Date\(/g, "|")
  12.                              .replace(/new Date\(|\)/g, "")
  13.                              .split("|")
  14.                              .map(function (arDate) {
  15.                     var values = arDate.split(",");
  16.                     return new Date(values[0], values[1], values[2]);
  17.                 })
  18.             })(),
  19.     toolbarTemplate:

Espero te sirva.

Saludos!

Etiquetas: date, funcion, objeto, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:12.