JavaScript, wie man das Datum von morgen im Format TT-MM-JJ erhält

88

Ich versuche, JavaScript dazu zu bringen, das Datum von morgen im Format (TT-MM-JJJJ) anzuzeigen.

Ich habe dieses Skript, das das heutige Datum im Format anzeigt (TT-MM-JJJJ).

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)

Aber wie bekomme ich es, um das Datum von morgen im gleichen Format anzuzeigen, dh 26/2/2012

Ich habe es versucht:

var day = currentDate.getDate() + 1

Allerdings könnte ich behalten +1und über 31 gehen, offensichtlich gibt es nicht> 32 Tage in einem Monat

Sie haben stundenlang gesucht, scheinen aber keine Antwort oder Lösung dafür zu sein?

daza166
quelle

Antworten:

170

Dies sollte es wirklich schön für Sie reparieren.

Wenn Sie dem Date-Konstruktor eine Zeit übergeben, erledigt er den Rest der Arbeit.

24 Stunden 60 Minuten 60 Sekunden 1000 Millisekunden

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>")

Beachten Sie, dass bei dieser Methode das Datum in genau 24 Stunden zurückgegeben wird, was in Bezug auf die Sommerzeit ungenau sein kann.

Phils Antwortarbeit ist jederzeit möglich:

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

Der Grund, warum ich meinen Beitrag bearbeitet habe, ist, dass ich selbst einen Fehler erstellt habe, der während der Sommerzeit mit meiner alten Methode aufgetreten ist.

Roderick Obrist
quelle
8
Danke, etwas kürzervar currentDate = new Date(+new Date() + 86400000);
Ikrom
12
Beachten Sie, dass bei dieser Strategie Probleme im Zusammenhang mit der Sommerzeit auftreten können, die dazu führen, dass ein Tag im Jahr 23 Stunden und einer Tag 25 Stunden hat. Die folgende Antwort von Phil vermeidet dieses Problem.
gsf
2
new Date().getTime()kann vereinfacht werden alsDate.now()
czerny
Sie sind beide korrekt, ich glaube jedoch nicht, dass IE8 Date.now () hat.
Roderick Obrist
1
@ConorB, .getMonth () gibt 0 für Januar, 1 für Februar ... usw. 11 für Dezember zurück. Durch Hinzufügen von 1 wird der Array-Index vom lesbaren Datum geändert.
Roderick Obrist
133

Die JavaScript- DateKlasse übernimmt dies für Sie

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
quelle
Funktioniert das noch, wenn heute der letzte Tag eines Monats war, wie der 31.? Wenn Sie +1 hinzufügen, würden Sie nicht den 32. Platz belegen?
Timo
19
@ Timo ziemlich sicher, dass mein Beispiel genau das zeigt
Phil
1
Oh ja, du hast recht. Ich habe vergessen, dass der Februar nur 28 Tage hat :-)
Timo
Dies ist für mich heute fehlgeschlagen, da das neue Datum ('2016-10-31') 'Sun Oct 30 2016 23:00:00 GMT-0100 (AZOT)' zurückgibt. Ich bin auf den Azoren und die Zeitzone wurde von AZOST auf AZOT geändert
nunoarruda
@unoarruda Entschuldigung, nicht wirklich sicher, was Sie dort sagen oder was es mit dieser Antwort zu tun hat
Phil
7

Ich würde die DateJS-Bibliothek verwenden. Genau das kann es.

http://www.datejs.com/

Die machen folgendes:

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

Date.today() - gibt Ihnen heute um Mitternacht.

MattW
quelle
1
Ich mag Phils Antwort besser ... Ich verwende DateJS für alle Daten - aber es scheint, dass dies nur mit JS möglich ist!
MattW
4
Date.parse ('morgen'). ToString ('TT-MM-JJJJ');
geoffrey.mcgill
5

Die Methode Date.prototype.setDate () akzeptiert gerade Argumente außerhalb des Standardbereichs und ändert das Datum entsprechend.

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

Im Folgenden wird eine Kombination aus den Antworten von Roderick und Phil mit zwei zusätzlichen Bedingungen verwendet, die einstellige Monate / Tage ausmachen.

Viele APIs ich gearbeitet habe sind wählerisch über diese, und Daten erfordern haben acht Ziffern (zB ‚02022017‘) anstelle der 6 oder 7 Ziffern das Datum Klasse , die Sie wird in einigen Situationen geben.

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
quelle
3

Anwendungsfälle :

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

WENN "morgen" nicht vom heutigen, sondern von einem anderen Datum abhängt Date.now(), verwenden Sie keine statischen Methoden, sondern müssen nicht statische Methoden verwenden:

dh: Fr 05. Dezember 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
quelle
3

Methode 1: Wenn Sie keine Probleme mit der Verwendung einer anderen Bibliothek haben, kann dies bei Verwendung von moment.js für Sie funktionieren

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

Methode 2: Verwenden von Date.js,

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

Diese Methode verwendet eine externe Bibliothek und nicht die native Datumsbibliothek. Da mein Bootstrap-DatetimePicker moment.js und die native Datumsbibliothek verwendete, bevorzugte ich Methode 1. In dieser Frage werden diese und einige andere Methoden erwähnt.

Shiwangi
quelle
2

Es ist wirklich einfach:

1: Erstellen Sie ein Datumsobjekt mit dem heutigen Datum und der heutigen Uhrzeit. 2: Verwenden Sie Datumsobjektmethoden, um Tag, Monat und ganzes Jahr abzurufen und mit dem Operator + zu verketten.

Besuchen Sie http://www.thesstech.com/javascript/date-time JavaScript, um ein detailliertes Tutorial zu Datum und Uhrzeit zu erhalten.

Beispielcode:

  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
quelle
Dies verlängert nicht das Datum auf den Monat, wie das OP bereits beobachtet hat.
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
quelle
0

Das gleiche wie die ursprüngliche Antwort, aber in einer Zeile:

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

Die Zahlen stehen für 24 Stunden 60 Minuten 60 Sekunden 1000 Millisekunden.

Velter
quelle
Diese Antwort ist nicht korrekt, da die Sommerzeit nicht berücksichtigt wird.
Enttäuscht
0

Sie können dies versuchen:

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
quelle
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
quelle
-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
quelle
Bitte erwägen Sie, Ihrer Antwort eine Erklärung hinzuzufügen.
Amar
-1
var curDate = new Date().toLocaleString().split(',')[0];

Einfach! im Format TT.MM.JJJJ.

Idan
quelle