वर्तमान तिथि से 30 दिन पहले कैसे प्राप्त करें?


95

मेरे पास एक प्रारंभ कैलेंडर इनपुट बॉक्स और एक अंत कैलेंडर इनपुट बॉक्स है। हम चाहते हैं कि वर्तमान तिथि से 30 दिन पहले डिफॉल्ट कैलेंडर इनपुट बॉक्स शुरू करें और वर्तमान तिथि होने के लिए अंतिम कैलेंडर इनपुट बॉक्स। यहाँ मेरी दिनांक vars है।

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;इस तरह होगी , जाहिर है कि यह काम नहीं करेगा।

इसलिए यदि वर्तमान तिथि 30 दिसंबर, 2011 है, तो मैं चाहता हूं कि प्रारंभ तिथि 1 दिसंबर, 2011 को पढ़ें।

संपादित करें: मेरे सवाल का जवाब दिया गया था ... की तरह। Date.today();और Date.today().add(-30);काम करते हैं, लेकिन मुझे प्रारूप में तारीख चाहिए January 13, 2012। नहीं है Fri Jan 13 2012 10:48:56 GMT -055 (EST)। कोई मदद?

अधिक संस्करण : इस लेखन के रूप में यह 2018 है। बस Moment.js का उपयोग करें । यह सबसे अच्छा है।


stackoverflow.com/questions/563406/… मुझे लगता है कि मदद मिल सकती है।
टिम विंटर

जवाबों:


147

उत्कृष्ट Datejs जावास्क्रिप्ट डेट लाइब्रेरी का उपयोग करने का प्रयास करें (मूल अब बनाए नहीं रखा गया है इसलिए आप इसके बजाय सक्रिय रूप से बनाए रखा कांटा में रुचि रख सकते हैं ):

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

[संपादित करें]

उत्कृष्ट क्षण भी देखें ।js जावास्क्रिप्ट तिथि पुस्तकालय :

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

3
मैं बिना समय के यूटीसी में आज से 30 दिन पहले और बाद की शुरुआत और समाप्ति की तारीख पाने के लिए संघर्ष कर रहा था। यह काम किया:moment( moment().subtract(30, 'days') ).format("YYYY-MM-DD")
डायलन वालेड

3
मैंने moment()दृष्टिकोण का उपयोग किया और toDate()जावास्क्रिप्ट तिथि ऑब्जेक्ट को वापस लाने के लिए विधि को जोड़ा । धन्यवाद!
ब्रायली क्रिस्टोफर ऑक्ले

4
आपको इसके लिए पुस्तकालय का उपयोग करने की आवश्यकता क्यों होगी? वह पागल मालूम होता है।
हैरी

1
क्या आप कंसोल.लॉग के लिए लाइब्रेरी सुझा सकते हैं?
आंद्रे एल्रिको

149

इसे इस्तेमाल करे

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

जैसा कि @Neel द्वारा बताया गया है, यह विधि जावास्क्रिप्ट टाइमस्टैम्प प्रारूप में वापस आती है। इसे वापस दिनांक ऑब्जेक्ट में परिवर्तित करने के लिए, आपको ऊपर एक नई दिनांक ऑब्जेक्ट में पास करना होगा; new Date(priorDate)


14
बाहरी पुस्तकालय का उपयोग किए बिना मुझे यह समाधान सबसे अच्छा लगता है। धन्यवाद।
गौमीम

16
ध्यान दें कि यह विधि जावास्क्रिप्ट टाइमस्टैम्प प्रारूप में वापस आती है। इसे वापस पुरानी वस्तु में बदलने के लिए, आपको उपरोक्तnew Date(priorDate)
नील

1
कभी-कभी आप बस एक पुस्तकालय के बिना वेनिला जेएस चाहते हैं! धन्यवाद :)
एंड्रयू मैक्लैश

मुझे सेटटैट मिलता है () कोई फ़ंक्शन नहीं है
चॉबी

1
@chovy एक ही तरीका है जिसकी मैं कल्पना कर सकता हूँ कि आप उस त्रुटि को प्राप्त कर रहे हैं क्योंकि आप setDate()किसी Dateऑब्जेक्ट पर कॉल नहीं कर रहे हैं । आपके कोड को देखे बिना निदान करना असंभव है, हालांकि।
रोरी मैक्रों

85

यहाँ आपके लिए एक बदसूरत समाधान है:

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

23
प्रफुल्लित करने वाला यह सबसे अच्छा समाधान है।
मार्क रोजर्स

7
सहमत - यह सबसे अच्छा समाधान है। यह रोरी मैकक्रॉसन के जवाब का बिल्कुल समाधान है - लेकिन संक्षिप्त, और पूर्ण (कोई बाहरी पुस्तकालयों की आवश्यकता नहीं)।
डैन निसेनबाम

6
@MarkRogers "Hilariously" सही शब्द है। जावास्क्रिप्ट तिथियाँ वास्तव में बेतुकी हैं।
जोसेफ्सटन

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

.getTime()विधि एक मानक जे एस टाइमस्टैम्प (मिलीसेकेंड जनवरी 1/1970 के बाद से) जिस पर आप नियमित रूप से गणित संचालन, जो वापस दिनांक वस्तु को सीधे खिलाया जा सकता है का उपयोग कर सकते देता है।


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

जावास्क्रिप्ट किसी भी बाहरी पुस्तकालयों के बिना इसे संभाल सकता है।

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

यह किसी भी अन्य उत्तर से अलग कैसे है, जैसे यह एक ? इसके अलावा, यहाँ ऐसा कुछ भी नहीं है जो ES5 ... या ES3 में भी नहीं किया जा सकता है।
Heretic Monkey

0

आप कोड का केवल 1 लाइन के माध्यम से नोड जेएस में क्षण का उपयोग करके कर सकते हैं। :)

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

UTC प्रारूप, EASIER नहीं चाहते: P

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

0

यदि आप गति के लिए इच्छुक नहीं हैं, तो आप इसका उपयोग कर सकते हैं:

let x = new Date()

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

मूल रूप से इसे वर्तमान तिथि (चालू माह की तारीख का सांख्यिक मूल्य) मिलती है और फिर मूल्य निर्धारित होता है। तब यह आईएसओ प्रारूप में परिवर्तित हो जाता है, जिसमें से मैं शुद्ध संख्यात्मक तिथि (यानी 2019-09-23) को समाप्त करता हूं।

आशा है कि यह किसी की मदद करता है।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.