現在の日付の30日前に取得するにはどうすればよいですか?


95

開始カレンダー入力ボックスと終了カレンダー入力ボックスがあります。デフォルトでは、現在の日付の30日前の開始カレンダー入力ボックスと、現在の日付を終了カレンダー入力ボックスに設定します。これが私の日付変数です。

var today = new Date(),
    dd    = today.getDate(),
    mm    = today.getMonth(),
    yyyy  = today.getFullYear(),
    month = ["January", "February", "March",
        "April", "May", "June", "July", "August",
        "September", "October" "November", "December"],
    startdate = month[mm] + ", " + yyyy.toString();

終了日は次のようvar enddate = startdate - 30;になります。明らかに、これは機能しません。

したがって、現在の日付が2011年12月30日である場合、開始日は2011年12月1日と表示します。

編集:私の質問は答えられました...ちょっと。Date.today();そしてDate.today().add(-30);仕事が、私はの形式で日付を必要としますJanuary 13, 2012。ないFri Jan 13 2012 10:48:56 GMT -055 (EST)。何か助けは?

詳細編集:これを書いている時点では、2018年です。Moment.jsを使用してください。一番よい。


回答:


149

優れたDatejs JavaScript日付ライブラリを使用してみてください(元のライブラリはもう保守されていないため、代わりにアクティブに保守されているこのフォークに興味があるかもしれません)。

Date.today().add(-30).days(); // or...
Date.today().add({days:-30});

[編集]

優れたMoment.js JavaScript日付ライブラリも参照してください。

moment().subtract(30, 'days'); // or...
moment().add(-30, 'days');

3
時間のないUTCで、今日の30日前と後の開始日と終了日を取得するのに苦労していました。これは機能しました:moment( moment().subtract(30, 'days') ).format("YYYY-MM-DD")
ディランヴァレード2015年

3
このmoment()アプローチを使用してtoDate()メソッドを追加し、JavaScript日付オブジェクトを取得しました。ありがとう!
Brylie Christopher Oxley 2017

4
これにライブラリを使用する必要があるのはなぜですか?それはおかしいようです。
ハリー

1
console.logのライブラリを推奨できますか?
Andre Elrico

149

これを試して

var today = new Date()
var priorDate = new Date().setDate(today.getDate()-30)

@Neelで述べたように、このメソッドはJavaScriptタイムスタンプ形式で返されます。これを日付オブジェクトに戻すには、上記を新しい日付オブジェクトに渡す必要があります。new Date(priorDate)


14
外部ライブラリを使用せずに、私はこのソリューションを最も気に入っています。ありがとう。
Gowiem 2014年

16
このメソッドはJavaScriptタイムスタンプ形式で返されることに注意してください。それを日付オブジェクトに戻すには、上記を渡す必要がありますnew Date(priorDate)
Neel

1
ライブラリなしのバニラjsが必要な場合もあります。ありがとう:)
Andrew McOlash

setDate()は関数ではありません
不安定な

1
@chovyあなたがそのエラーを受け取っていると私が想像できる唯一の方法はsetDate()Dateオブジェクトを呼び出さないためです。ただし、コードを確認せずに診断することはできません。
Rory McCrossan

86

ここにあなたのための醜い解決策があります:

var date = new Date(new Date().setDate(new Date().getDate() - 30));

24
陽気にこれは最善の解決策です。
Mark Rogers

8
同意-これが最善の解決策です。これは、まさに Rory McCrossanの答えの解決策ですが、簡潔で完全です(外部ライブラリは不要です)。
Dan Nissenbaum、2016年

7
@MarkRogersは「陽気に」が正しい言葉です。JavaScriptの日付は本当にばかげています。
JosephStyons 2017年

はい、これはシンプルで最良のソリューションです。
Sachini Witharana

37
startDate = new Date(today.getTime() - 30*24*60*60*1000);

この.getTime()メソッドは、標準のJSタイムスタンプ(1970年1月1日からのミリ秒)を返します。このタイムスタンプでは、通常の数学演算を使用でき、Dateオブジェクトに直接フィードバックできます。


8

今日から30日後

let now = new Date()
console.log('Today: ' + now.toUTCString())
let next30days = new Date(now.setDate(now.getDate() + 30))
console.log('Next 30th day: ' + next30days.toUTCString())

今日から過去30日間のフォームを取得

let now = new Date()
console.log('Today: ' + now.toUTCString())
let last30days = new Date(now.setDate(now.getDate() - 30))
console.log('Last 30th day: ' + last30days.toUTCString())


5

JavaScriptは、外部ライブラリなしで処理できます。

var today = new Date();
var dateLimit = new Date(new Date().setDate(today.getDate() - 30));

document.write(today + "<br/>" + dateLimit)


2

簡単です。(Using Vanilla JS)

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000);

ISOFormat?

let days=30;
this.maxDateTime = new Date(Date.now() - days * 24 * 60 * 60 * 1000).toISOString();


1

私は瞬間のjsを好むでしょう

startDate = moment().subtract(30, 'days').format('LL')  // January 29, 2015

endDate = moment().format('LL'); // February 28, 2015

0

これはES6バージョンです

let date = new Date()
let newDate = new Date(date.setDate(date.getDate()-30))
console.log(newDate.getMonth()+1 + '/' + newDate.getDate() + '/' + newDate.getFullYear() )

これはどのようにのように、他の回答のいずれかの異なるこの1?また、ES5やES3でも実行できなかったものはありません。

0

Node JSでモーメントを使用して、1行のコードで簡単に行うことができます。:)

    let lastOneMonthDate = moment().subtract(30,"days").utc().toISOString()

UTC形式は必要ありません。EASIER:P

    let lastOneMonthDate = moment().subtract(30,"days").toISOString()

0

momentjsを使いたくない場合は、これを使用できます。

let x = new Date()

x.toISOString(x.setDate(x.getDate())).slice(0, 10)

基本的には、現在の日付(今月の日付の数値)を取得し、その値を設定します。次に、それは私が純粋な数値の日付をスライスするISO形式に変換します(つまり、2019-09-23)

それが誰かを助けることを願っています。


0

let today = new Date()

let last30Days = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30)

last30Days 日付オブジェクトになります

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