2011-04-21 13 views
26

¿Qué pasa con este script?javascript date + 7 days

Cuando configuro mi reloj para decir 29/04/2011 agrega 36/4/2011 en la entrada de la semana! pero la fecha correcta debería ser 6/5/2011

var d = new Date(); 
var curr_date = d.getDate(); 
var tomo_date = d.getDate()+1; 
var seven_date = d.getDate()+7; 
var curr_month = d.getMonth(); 
curr_month++; 
var curr_year = d.getFullYear(); 
var tomorrowsDate =(tomo_date + "/" + curr_month + "/" + curr_year); 
var weekDate =(seven_date + "/" + curr_month + "/" + curr_year); 
{ 
jQuery("input[id*='tomorrow']").val(tomorrowsDate); 
jQuery("input[id*='week']").val(weekDate); 
    } 
+4

'd.getDate()' te da un número entero ... ya no es ningún tipo de objeto de fecha en este punto ... – michelgotta

+1

Tendría que sugerirte simplemente leer lo que estás haciendo allí y trabajarlo en papel, tus errores serán obvios para ti. – Lazarus

Respuesta

0

dos problemas:

  1. seven_date es un número, no una fecha. 29 + 7 = 36
  2. getMonth devuelve un índice basado en cero del mes. Así que al agregar uno solo obtiene el número del mes actual.
+0

hmm ok ¿Alguna idea de cómo lograr esto usando las mejores prácticas? – user472285

+0

En general, querrá usar algunos de los métodos setter en el objeto de fecha (para el mes también, se encontrará con un problema similar en diciembre). Luego puede convertir el objeto Date resultante en una cadena. –

9

¿Algo como esto?

var days = 7; 
var date = new Date(); 
var res = date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
alert(res); 

convertir a salir de nuevo:

date = new Date(res); 
alert(date) 

o alternativamente:

date = new Date(res); 

// hours part from the timestamp 
var hours = date.getHours(); 

// minutes part from the timestamp 
var minutes = date.getMinutes(); 

// seconds part from the timestamp 
var seconds = date.getSeconds(); 

// will display time in 10:30:23 format 
var formattedTime = date + '-' + hours + ':' + minutes + ':' + seconds; 
alert(formattedTime) 
+1

vuelve a marcar 1303980939436 – user472285

+1

que es la marca de tiempo de UNIX - puede convertirlo luego en valores legibles por humanos - adivine esto es mejor práctica – ezmilhouse

+0

intente alerta (fecha) – adam77

0

Utilizando los métodos del objeto Fecha se podría ser útil.

por ejemplo:

myDate = new Date(); 
plusSeven = new Date(myDate.setDate(myDate.getDate() + 7)); 
+0

No funciona para mí ... – michelgotta

+0

devuelve 1303980894137/4/2011 – user472285

+3

* se mezcla con disgusto propio * – trickwallett

70
var date = new Date(); 
date.setDate(date.getDate() + 7); 

var dateMsg = date.getDate()+'/'+ (date.getMonth()+1) +'/'+date.getFullYear(); 
alert(dateMsg); 
+3

¡Esto incluso funciona si agrega más de 31 días! – Geo

+0

¿Qué sociedad moderna usa más de 31 días? – CodeMonkey

+0

@CodeMonkey 32 días?: D –

5

La forma más sencilla de obtener una fecha x días en el futuro es incrementar la fecha:

function addDays(dateObj, numDays) { 
    return dateObj.setDate(dateObj.getDate() + numDays); 
} 

Tenga en cuenta que esto modifica el objeto de fecha suministrada, p.ej

function addDays(dateObj, numDays) { 
    dateObj.setDate(dateObj.getDate() + numDays); 
    return dateObj; 
} 

var now = new Date(); 
var tomorrow = addDays(new Date(), 1); 
var nextWeek = addDays(new Date(), 7); 

alert(
    'Today: ' + now + 
    '\nTomorrow: ' + tomorrow + 
    '\nNext week: ' + nextWeek 
); 
+0

esto está bien, parece hacer lo que quiero, pero devuelve la fecha así Viernes, 06 de mayo de 2011, 11:07:01 GMT + 0200, pero me gusta que la fecha esté en este formato dd/mm/year, así: 06/05/2011 – user472285

2
var days = 7; 
var date = new Date(); 
var res = date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 

var d = new Date(res); 
var month = d.getMonth() + 1; 
var day = d.getDate(); 

var output = d.getFullYear() + '/' + 
    (month < 10 ? '0' : '') + month + '/' + 
    (day < 10 ? '0' : '') + day; 

$('#txtEndDate').val(output); 
1

Puede añadir o aumentar el día de la semana durante el siguiente ejemplo y espero que esto ayuda para you.Lets ver ....

 //Current date 
     var currentDate = new Date(); 
     //to set Bangladeshi date need to add hour 6   

     currentDate.setUTCHours(6);    
     //here 2 is day increament for the date and you can use -2 for decreament day 
     currentDate.setDate(currentDate.getDate() +parseInt(2)); 

     //formatting date by mm/dd/yyyy 
     var dateInmmddyyyy = currentDate.getMonth() + 1 + '/' + currentDate.getDate() + '/' + currentDate.getFullYear();