2011-05-08 12 views
11

मेरे पास प्रारूप (मिमी/डीडी/वाई) में एक तिथि है और इसमें 30 दिन जोड़ना चाहते हैं। मैं बस ऐसा करने के लिए सबसे अच्छी विधि उत्सुक हूँ? मैं जावास्क्रिप्ट में नया हूं इसलिए उदाहरण उपयोगी होंगे।तिथि के लिए 30 दिन (मिमी/डीडी/वाई)

संपादित

खेद है कि मैं अमेरिका दिनांक स्वरूप (dd/mm/yy) का उपयोग कर रहा हूँ।

उत्तर

34

सीधे शब्दों में आज की तारीख तक 30 दिनों जोड़ें:

var now = new Date(); 
now.setDate(now.getDate() + 30); 

हालांकि, कि क्या तुम सच में करना चाहते हैं? या आप आज एक महीने और अधिक प्राप्त करना चाहते हैं? अमेरिका के लिए

var dString = '9/5/2011'; 
var dParts = dString.split('/'); 
var in30Days = new Date(dParts[2] + '/' + 
         dParts[1] + '/' + 
         (+dParts[0] + 30) 
       ); 

दिनांक स्वरूप, स्वैप भागों 0 और 1:

आप का उपयोग कर एक तारीख वस्तु के लिए विज्ञापन/एम/y तारीख में बदल सकते हैं

var in30Days = new Date(dParts[2] + '/' + 
         dParts[0] + '/' + 
         (+dParts[1] + 30) 
       ); 

लेकिन इसे पाने के लिए बेहतर है फ़ंक्शन को देने से पहले एक ISO8601 प्रारूप में दिनांक, आपको वास्तव में एक ही फ़ंक्शन में दिनांक पार्सिंग और अंकगणित मिश्रण नहीं करना चाहिए। एक व्यापक तिथि पार्सिंग फ़ंक्शन जटिल है (अत्यधिक नहीं, लेकिन वे बहुत लंबे समय तक हैं और बहुत सारे परीक्षण की आवश्यकता है), आपके पास डेट ऑब्जेक्ट होने के बाद अंकगणित काफी सरल है।

+0

आप दिनांक ओ बनाने के लिए थोड़ा और काम करने के लिए आवश्यकता होगी प्रश्न में गैर-यूएस दिनांक प्रारूप का उपयोग करके इंजेक्ट करें। – Phil

+0

नहीं, मैं नहीं करता हूं। उपरोक्त एक आईएसओ 8601 प्रारूप दिनांक स्ट्रिंग बनाता है, जिसे ईसीएमएस्क्रिप्ट दिनांक वस्तु डिफ़ॉल्ट रूप से पार करती है। प्रारूप में असंबद्ध मूल में एक छोटी सी त्रुटि थी, लेकिन मैंने तब से संपादित किया है। :-) – RobG

+0

@RobG मेरा मतलब प्रारंभिक दिनांक ऑब्जेक्ट समय सेट करने के लिए गैर-यूएस दिनांक स्ट्रिंग को पार्स करना था (* ed: ऐसा लगता है कि मेरा मतलब क्या है *) ;-) – Phil

8

इसे करने का एक आसान तरीका Date कन्स्ट्रक्टर में टाइमस्टैम्प मान भेजना है। 30 दिनों की गणना करने के टाइमस्टैम्प में मापा:

30 * 24 * 60 * 60 * 1000

उसके बाद, आप वर्तमान टाइमस्टैम्प की जरूरत है:

Date.now()

अंत में, योग दोनों मूल्यों और निर्माता में एक परम के रूप में परिणाम भेजें:

var nowPlus30Days = new Date(Date.now() + (30 * 24 * 60 * 60 * 1000));

+0

var nowPlus30days = नई तारीख (दिनांक .now() + 30 * 24 * 60 * 60 * 1000) .toJSON() स्लाइस (0,10); – Zerubbabel

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