JavaScript como obter a data de amanhã no formato dd-mm-aa

89

Estou tentando fazer com que o JavaScript exiba a data de amanhã no formato (dd-mm-aaaa)

Eu tenho este script que exibe a data de hoje no formato (dd-mm-aaaa)

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

Displays: 25/2/2012 (todays date of this post)

Mas como faço para exibir a data de amanhã no mesmo formato, ou seja, 26/2/2012

Eu tentei isso:

var day = currentDate.getDate() + 1

No entanto, eu poderia manter +1e passar de 31, obviamente, não há> 32 dias em um mês

Procurando por horas, mas parece não haver resposta ou solução para isso?

daza166
fonte

Respostas:

172

Isso deve consertar muito bem para você.

Se você passar uma hora ao construtor Date, ele fará o resto do trabalho.

24 horas 60 minutos 60 segundos 1000 milissegundos

var currentDate = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

Uma coisa a ter em mente é que esse método retornará a data exatamente 24 horas a partir de agora, o que pode ser impreciso no horário de verão.

O trabalho de resposta de Phil é a qualquer hora:

var currentDate = new Date();
currentDate.setDate(currentDate.getDate() + 1);

A razão pela qual editei minha postagem é porque eu mesmo criei um bug que veio à tona durante o horário de verão usando meu método antigo.

Roderick Obrist
fonte
9
Obrigado, um pouco mais curtovar currentDate = new Date(+new Date() + 86400000);
Ikrom
13
Observe que, com essa estratégia, você pode encontrar problemas em torno do horário de verão, o que faz com que um dia do ano tenha 23 horas e outro, 25. A resposta de Phil abaixo evita esse problema.
gsf
3
new Date().getTime()pode ser simplificado comoDate.now()
czerny
Ambos estão corretos, mas não acho que o IE8 tenha Date.now ().
Roderick Obrist
2
@ConorB, .getMonth () retorna 0 para janeiro, 1 para fevereiro ... etc. 11 para dezembro. Adicionar 1 o transforma de índice de array em data legível por humanos.
Roderick Obrist,
134

A Dateclasse JavaScript trata disso para você

var d = new Date("2012-02-29")
console.log(d)
// Wed Feb 29 2012 11:00:00 GMT+1100 (EST)

d.setDate(d.getDate() + 1)
console.log(d)
// Thu Mar 01 2012 11:00:00 GMT+1100 (EST)

console.log(d.getDate())
// 1
Phil
fonte
Isso ainda funcionará se hoje for o último dia do mês, como 31? Se você adicionar +1, não terminaria no 32º?
Timo
19
@Timo com certeza meu exemplo demonstra exatamente isso
Phil,
1
Oh, sim, você está certo. Esqueci que fevereiro só tem 28 dias :-)
Timo
Isso falhou para mim hoje porque a nova data ('2016-10-31') retorna 'Sun Oct 30 2016 23:00:00 GMT-0100 (AZOT)'. Estou nos Açores e o fuso horário foi alterado de AZOST para AZOT
nunoarruda 31/10/16
@nunoarruda, desculpe, não tenho certeza do que você está dizendo aqui ou o que isso tem a ver com esta resposta
Phil,
7

Eu usaria a biblioteca DateJS. Pode fazer exatamente isso.

http://www.datejs.com/

Faça o seguinte:

var d = new Date.today().addDays(1).toString("dd-mm-yyyy");

Date.today() - dá hoje à meia-noite.

MattW
fonte
1
Eu gosto mais da resposta de Phil ... Eu uso DateJS para todas as datas - mas parece que pode ser feito usando JS sozinho!
MattW
4
Date.parse ('tomorrow'). ToString ('dd-MM-aaaa');
geoffrey.mcgill
5

O método Date.prototype.setDate () aceita até mesmo argumentos fora do intervalo padrão e altera a data de acordo.

function getTomorrow() {
    const tomorrow = new Date();
    tomorrow.setDate(tomorrow.getDate() + 1); // even 32 is acceptable
    return `${tomorrow.getFullYear()}/${tomorrow.getMonth() + 1}/${tomorrow.getDate()}`;
}
Czerny
fonte
4

A seguir, uma combinação das respostas de Roderick e Phil com duas condicionais extras que representam meses / dias com um único dígito.

Muitas APIs com as quais trabalhei são exigentes quanto a isso e exigem que as datas tenham oito dígitos (por exemplo, '02022017'), em vez dos 6 ou 7 dígitos que a classe de data fornecerá em algumas situações.

function nextDayDate() {
      // get today's date then add one
      var nextDay = new Date();
      nextDay.setDate(nextDay.getDate() + 1);

      var month = nextDay.getMonth() + 1;
      var day = nextDay.getDate();
      var year = nextDay.getFullYear();

      if (month < 10) { month = "0" + month } 
      if (day < 10) { day = "0" + day }

      return month + day + year;
}
DNestoff
fonte
3

Casos de uso:

Date.tomorrow() // 1 day next 
Date.daysNext(1) // alternative Date.tomorrow()
Date.daysNext(2) // 2 days next. 

SE "amanhã" não depende de hoje, mas de outra data diferente de Date.now(), Não use métodos estáticos, mas você deve usar não estáticos:

ou seja: Sex, 05 de dezembro de 2008

 var dec5_2008=new Date(Date.parse('2008/12/05'));
 dec5_2008.tomorrow(); // 2008/12/06
    dec5_2008.tomorrow().day // 6
    dec5_2008.tomorrow().month // 12
    dec5_2008.tomorrow().year //2008
 dec5_2008.daysNext(1); // the same as previous
 dec5_2008.daysNext(7) // next week :)

API:

Dateold=Date;function Date(e){var t=null;if(e){t=new Dateold(e)}else{t=new Dateold}t.day=t.getDate();t.month=t.getMonth()+1;t.year=t.getFullYear();return t}Date.prototype.daysNext=function(e){if(!e){e=0}return new Date(this.getTime()+24*60*60*1e3*e)};Date.prototype.daysAgo=function(e){if(!e){e=0}return Date.daysNext(-1*e)};Date.prototype.tomorrow=function(){return this.daysNext(1)};Date.prototype.yesterday=function(){return this.daysAgo(1)};Date.tomorrow=function(){return Date.daysNext(1)};Date.yesterday=function(){return Date.daysAgo(1)};Date.daysNext=function(e){if(!e){e=0}return new Date((new Date).getTime()+24*60*60*1e3*e)};Date.daysAgo=function(e){if(!e){e=0}return Date.daysNext(-1*e)}
Abdennour TOUMI
fonte
3

Método 1: se você não tiver problemas em usar outra biblioteca, isso pode funcionar para você usando o moment.js

moment().add('days', 1).format('L');

Método 2: usando Date.js,

<script type="text/javascript" src="date.js"></script>    
var tomorrow = new Date.today().addDays(1).toString("dd-mm-yyyy"); 

Este método usa biblioteca externa e não a biblioteca nativa Date. Como meu bootstrap-datetimepicker estava usando moment.js e biblioteca de data nativa, preferi o método 1. Esta pergunta menciona esses e alguns outros métodos.

Shiwangi
fonte
2

É muito simples:

1: Crie um objeto de data com a data e hora de hoje. 2: Use métodos de objeto de data para recuperar dia, mês e ano inteiro e concatená-los usando o operador +.

Visite http://www.thesstech.com/javascript/date-time JavaScript para obter um tutorial detalhado sobre data e hora.

Código de amostra:

  var my_date = new Date();  
  var tomorrow_date =       (my_date .getDate()+1)  + "-" + (my_date .getMonth()+1) + "-" + my_date .getFullYear();
  document.write(tomorrow_date);
Sohail Arif
fonte
Isso não rola data para mês, como o OP já observava.
Wolfgang Kuehn
0
function getMonday(d)
{
   // var day = d.getDay();
   var day = @Config.WeekStartOn
   diff = d.getDate() - day + (day == 0 ? -6 : 0);
   return new Date(d.setDate(diff));
}
Preetika
fonte
0

O mesmo que a resposta original, mas em uma linha:

var tomorrow = new Date(Date.now() + 24 * 60 * 60 * 1000)

Os números representam 24 horas 60 minutos 60 segundos 1000 milissegundos.

Velter
fonte
Esta resposta não está correta porque o horário de verão não é levado em consideração.
Decepcionado em
0

você pode tentar isto:

function Tomorrow(date=false) {
    var givendate = (date!=false) ? new Date(date) : new Date();
    givendate.setDate(givendate.getDate() + 1);
    var day = givendate.getUTCDate()
    var month = givendate.getUTCMonth()+1
    var year = givendate.getUTCFullYear()
    result ="<b>" + day + "/" + month + "/" + year + "</b>";
    return result;
} 
var day = Tomorrow('2020-06-30');
console.log('tomorrows1: '+Tomorrow('2020-06-30'));
console.log('tomorrows2: '+Tomorrow());

Walter Nuñez
fonte
0
        Date.prototype.NextDay = function (e) {
        return new Date(this.getFullYear(), this.getMonth(), this.getDate() + ("string" == typeof e ? parseInt(e, 10) : e));
    }

    // tomorrow
    console.log(new Date().NextDay(1))

    // day after tomorrow
    console.log(new Date().NextDay(2))
Fhulufhelo Mokhomi
fonte
-1
        //-----------Date Configuration march 18,2014----------------------

        //alert(DateFilter);

        var date = new Date();
        y = date.getFullYear(), m = date.getMonth();
        var EndDate = new Date();



        switch (DateFilter) {
            case 'today': var StartDate = EndDate;   //todays date                 
                break;
            case 'yesterday':
                var d = new Date();
                var previousDate = new Date(d.getTime() - 1000 * 60 * 60 * 24);
                var StartDate = new Date(previousDate.yyyymmdd()); //yesterday Date
                break;
            case 'tomorrow':
                var d = new Date();
                var NextDate = new Date(d.getTime() + 1000 * 60 * 60 * 24);
                var StartDate = new Date(NextDate.yyyymmdd()); //tomorrow Date
                break;
            case 'thisweek': var StartDate = getMonday(new Date()); //1st date of this week
                break;
            case 'thismonth': var StartDate = new Date(y, m, 1);  //1st date of this month
                break;
            case 'thisyear': var StartDate = new Date("01/01/" + date.getFullYear());  //1st date of this year
                break;
            case 'custom': //var StartDate = $("#txtFromDate").val();                   
                break;
            default:
                var d = new Date();
                var StartDate = new Date(d.getTime() - 30 * 24 * 60 * 60 * 1000); //one month ago date from now.
        }


        if (DateFilter != "custom") {
            var SDate = $.datepicker.formatDate('@Config.DateFormat', StartDate); $("#txtFromDate").val(SDate);
            var EDate = $.datepicker.formatDate('@Config.DateFormat', EndDate); $("#txtToDate").val(EDate);
        }
        //-----------Date Configuration march 18,2014----------------------
Preetika
fonte
Considere adicionar uma explicação à sua resposta.
Amar
-1
var curDate = new Date().toLocaleString().split(',')[0];

Simplesmente! no formato dd.mm.aaaa.

Idan
fonte