2012-01-12 18 views
48

मेरे पास प्रारंभ कैलेंडर इनपुट बॉक्स और अंत कैलेंडर इनपुट बॉक्स है। हम डिफ़ॉल्ट तारीख से 30 दिन पहले और अंतिम कैलेंडर इनपुट बॉक्स वर्तमान दिनांक होने के लिए डिफ़ॉल्ट रूप से कैलेंडर इनपुट बॉक्स शुरू करना चाहते हैं। यहां मेरी तिथि वर्र्स है।वर्तमान तिथि से 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; की तरह कुछ जाहिर है यह काम नहीं होगा किया जाएगा।

तो अगर वर्तमान तिथि 30 दिसंबर, 2011 मैं आरंभ तिथि 1 दिसंबर, 2011

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

+0

http://stackoverflow.com/questions/563406/add-days-to-datetime -using-जावा-स्क्रिप्ट मुझे लगता है कि मदद कर सकता है। –

उत्तर

87

उत्कृष्ट Datejs JavaScript date library (मूल नहीं रह गया है बनाए रखा है ताकि आप के बजाय this actively maintained fork में रुचि हो सकती) का उपयोग कर प्रयास करें:

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

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

भी देखें उत्कृष्ट Moment.js JavaScript date library:

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

मेरी इच्छा है कि आपके पास 10 वोट हों ... – Ryley

+0

डाउनवोट क्यों? – maerics

+0

मुझे दिनांक.जे.एस. को इंगित करने के लिए धन्यवाद। –

1

मैं date.js का उपयोग करता हूं। यह आसानी से इसे संभालता है और सभी छलांग वर्ष की नींद का ख्याल रखता है।

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

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

+3

+1 एक लेकिन मैं लीप सेकेंड जैसे परेशानियों को नाटकीय कर दूंगा, आदि – maerics

+0

+1 - डेटज पढ़ने के लिए आसान है; इसे लागू करना आसान है। – Blazemonger

96

इस

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

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

+11

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

+9

ध्यान दें कि यह विधि जावास्क्रिप्ट टाइमस्टैम्प प्रारूप में लौटती है।इसे वापस ऑब्जेक्ट ऑब्जेक्ट में बदलने के लिए, आपको उपरोक्त को 'नई तिथि (प्रीडेटेट) ' – Neel

1

मैं पसंद करेंगे पल js

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

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

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

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

पर पारित करने की आवश्यकता है, यह बेहद अच्छा समाधान है। –

+13

जावास्क्रिप्ट में, कोई भी आपको चिल्ला नहीं सकता ... –

+1

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

संबंधित मुद्दे