JavaScriptdd-mm-yy形式で明日の日付を取得する方法


90

JavaScriptに明日の日付を(dd-mm-yyyy)の形式で表示させようとしています

今日の日付を形式(dd-mm-yyyy)で表示するこのスクリプトがあります

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)

しかし、どうすれば明日の日付を同じ形式で表示できますか? 26/2/2012

私はこれを試しました:

var day = currentDate.getDate() + 1

しかし、私は+131を超え続けることができましたが、明らかに月に32日を超える日はありません

何時間も探していましたが、これに関する答えや解決策がないようですか?

回答:


176

これはあなたにとって本当に素晴らしい問題を修正するはずです。

Dateコンストラクターに時間を渡すと、残りの作業が実行されます。

24時間60分60秒1000ミリ秒

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

この方法では、正確に24時間後の日付が返されるため、夏時間の前後で不正確になる可能性があることに注意してください。

フィルの答えはいつでも仕事です:

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

私が自分の投稿を編集した理由は、私自身が古い方法を使用してDST中に明らかになったバグを作成したためです。


9
ありがとう、少し短くvar currentDate = new Date(+new Date() + 86400000);
Ikrom 2014年

13
この戦略では、DSTに関連する問題が発生する可能性があることに注意してください。これにより、1年のうち1日が23時間、1日が25時間になります。以下のPhilの回答は、この問題を回避します。
gsf 2014

3
new Date().getTime()次のように簡略化できますDate.now()
czerny 2015

どちらも正しいですが、IE8にはDate.now()があるとは思いません。
Roderick Obrist 2015

2
@ ConorB、.getMonth()は、1月に0、2月に1を返します...など12月に11を返します。1を追加すると、配列インデックスから人間が読める日付に変わります。
Roderick Obrist 2016年

136

JavaScriptDateクラスがこれを処理します

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

今日が31日のように月の最後の日だった場合、これは引き続き機能しますか?+1を加えると32位になりませんか?
ティモ

19
@Timoは、私の例がそれを正確に示していることを確信しています
Phil

1
そうそう、そうだね。2月は28日しかないことを忘れました:
Timo

新しいDate( '2016-10-31')が 'Sun Oct 30 2016 23:00:00 GMT-0100(AZOT)'を返すため、これは今日私にとって失敗しました。私はアゾレス諸島にいますが、タイムゾーンがAZOSTからAZOTに変更されました
nunoarruda

@nunoarruda申し訳ありませんが、そこで何を言っているのか、それがこの回答と何の関係があるのか​​よくわかりません
Phil

7

DateJSライブラリを使用します。それはまさにそれを行うことができます。

http://www.datejs.com/

次の手順を実行します。

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

Date.today() -今日は真夜中になります。


1
Philの答えの方が好きです...すべての日付にDateJSを使用していますが、JSだけを使用して実行できるようです。
MattW 2012

4
Date.parse( 'tomorrow')。toString( 'dd-MM-yyyy');
geoffrey.mcgill 2012年

5

メソッドDate.prototype.setDate()は、標準範囲外の引数も受け入れ、それに応じて日付を変更します。

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

4

以下では、ロデリックとフィルの回答と、1桁の月/日を説明する2つの追加の条件を組み合わせて使用​​しています。

私が使用した多くのAPIはこれに気を配っており、状況によっては日付クラスが提供する6桁または7桁ではなく、8桁の日付が必要です(例:「02022017」)。

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;
}

3

ユースケース:

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

「明日」が今日ではなく、別の日付に依存している場合はDate.now()、静的メソッドを使用しないでください。非静的メソッドを使用する必要があります。

すなわち:2008年12月5日金曜日

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

3

方法1:他のライブラリの使用に問題がない場合は、moment.jsを使用すると問題なく機能する可能性があります

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

方法2:Date.jsを使用して、

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

このメソッドは、ネイティブのDateライブラリではなく、外部ライブラリを使用します。私のbootstrap-datetimepickerはmoment.jsとネイティブの日付ライブラリを使用していたので、方法1を選択しました。この質問では、これらの方法と他のいくつかの方法について説明します。


2

その本当に簡単です:

1:今日の日付と時刻を使用して日付オブジェクトを作成します。2:日付オブジェクトメソッドを使用して、日、月、および通年を取得し、+演算子を使用してそれらを連結します。

訪問http://www.thesstech.com/javascript/date-time日時に関する詳細なチュートリアルのためにJavaScriptを。

サンプルコード:

  var my_date = new Date();  
  var tomorrow_date =       (my_date .getDate()+1)  + "-" + (my_date .getMonth()+1) + "-" + my_date .getFullYear();
  document.write(tomorrow_date);

OPがすでに観察しているように、これは日付から月にロールオーバーしません。
WolfgangKuehn19年

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));
}

0

元の回答と同じですが、1行で:

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

数字は24時間60分60秒1000ミリ秒を表します。


1
DSTが考慮されていないため、この回答は正しくありません。
2018

0

あなたはこれを試すことができます:

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());


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

0

JSのみを使用(純粋なjs)

今日

new Date()
//Tue Oct 06 2020 12:34:29 GMT+0530 (India Standard Time)
new Date(new Date().setHours(0, 0, 0, 0))
//Tue Oct 06 2020 00:00:00 GMT+0530 (India Standard Time)
new Date(new Date().setHours(0, 0, 0,0)).toLocaleDateString('fr-CA')
//"2020-10-06"

明日

new Date(+new Date() + 86400000);
//Wed Oct 07 2020 12:44:02 GMT+0530 (India Standard Time)
new Date(+new Date().setHours(0, 0, 0, 0) + 86400000);
//Wed Oct 07 2020 00:00:00 GMT+0530 (India Standard Time)
new Date(+new Date().setHours(0, 0, 0,0)+ 86400000).toLocaleDateString('fr-CA')
//"2020-10-07"
//don't forget the '+' before new Date()

明後日

2を掛けるだけです例:-2 * 86400000

あなたはhttps://stackoverflow.com/a/3191729/7877099からすべてのロケールのショートコードを見つけることができます


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

あなたの答えに説明を追加することを検討してください。
アマール2014年

-1
var curDate = new Date().toLocaleString().split(',')[0];

単に!dd.mm.yyyy形式。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.