2009-04-05 15 views
8

से 3 महीने जोड़ना मेरा कार्यक्रम कुरोसावा उत्पन्न करने (उत्पादक) बनाने और ग्राहकों को इसे बनाने के बारे में है।जावा में अंकगणित दिनांक,

हर बार जब हम कुरोसावा उत्पन्न करते हैं, तो हमें अपनी आईडी, इसकी उत्पादन तिथि और समाप्ति तिथि प्रिंट करना होगा, जो उत्पादन तिथि से 3 महीने है।

मेरी समस्या है: मैं 3 महीने के बाद की तारीख की गणना कैसे कर सकता हूं?

+0

बीटीडब्ल्यू, कुरोसावा क्या है? –

+1

विकिपीडिया के मुताबिक, यह साकू, नागानो, जापान में पैदा हुआ है। –

उत्तर

15

अंतर्निहित Java Calendar API का उपयोग करें।

Calendar c = Calendar.getInstance(); 
c.add(Calendar.MONTH, 3); 

जिस प्रारूप को आप ढूंढ रहे हैं, उस तारीख को प्रिंट करने के लिए एपीआई का संदर्भ लें।

9

तुम भी अधिक शक्तिशाली और आसान Joda Time Library उपयोग करने के लिए इस्तेमाल कर सकते हैं:

DateMidnight productionDate = new DateMidnight(); 
DateMidnight expirationDate = productionDate.plusMonths(3); 
System.out.println(expirationDate.toString("dd.MM.yyyy")); 

Joda समय में निर्मित Java Calendar API.

+0

जोडा को किसी तारीख के लिए 3 महीने जोड़ने के रूप में सरल के लिए क्यों उपयोग करें? – javashlook

+1

आप सही हैं लेकिन जब आप java.util.Date/Calendar में 3 महीने जोड़ते हैं तो आप उसी उदाहरण में हेरफेर करते हैं जो त्रुटि-प्रवण हो सकता है। जोडा-टाइम ऑब्जेक्ट्स अपरिवर्तनीय हैं।और मुझे लगता है कि आप आमतौर पर 3 महीने के मुकाबले डेट के मुकाबले ज्यादा कुछ करते हैं। मुझे आशा है कि जावा 7 में जोडा-टाइम (जेएसआर 310) –

0

आप तारीख गणित के साथ काम करने की जरूरत है JODA काम करता है में कई फायदे हैं बेहतर, कैलेंडर को टाइमस्टैम्प पसंद है।

0

/जावा क्लास कैलेंडर सार है। तो आपको ग्रेगोरियन कैलेंडर श्रेणी का उपयोग करने की आवश्यकता है।/

java.util.GregorianCalendar gC = new java.util.GregorianCalendar(); 

java.util.Date yourDate = new java.util.Date(); 
gC.setTime(yourDate); 

/1 सप्ताह/

gC.add(java.util.Calendar.WEEK_OF_YEAR, -1); 
+2

शामिल होगा [getInstance] (http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getInstance%28%29) कैलेंडर के तरीके स्थिर हैं ताकि आप उनका उपयोग कर सकें। – KSev

+1

और पसंदीदा हैं, क्योंकि getInstance() एक स्थिर फैक्ट्री विधि है (प्रभावी जावा, जोशुआ ब्लोच देखें) जो आपके लोकेल के लिए सबसे अच्छा समय निर्धारित करने का प्रयास करेगा। –

1

tl वापस जाने के लिए 3 महीने/

gC.add(java.util.Calendar.MONTH_OF_YEAR, 3); 

/जोड़ें; डॉ

LocalDate.now()   // Determine today’s date. 
     .plusMonths(3) // Add three months. 

java.time

आधुनिक दृष्टिकोण जावा.टाइम कक्षाओं का उपयोग करता है।

LocalDate कक्षा समय-समय पर और समय क्षेत्र के बिना दिनांक-केवल मूल्य का प्रतिनिधित्व करती है।

एक तिथि निर्धारित करने में एक समय क्षेत्र महत्वपूर्ण है। किसी भी क्षण के लिए, तिथि ज़ोन द्वारा दुनिया भर में बदलती है। उदाहरण के लिए, Paris France में मध्यरात्रि के कुछ मिनट बाद एक नया दिन है जबकि अभी भी "कल" ​​Montréal Québec में है।

यदि कोई समय क्षेत्र निर्दिष्ट नहीं है, तो जेवीएम पूरी तरह से अपने वर्तमान डिफ़ॉल्ट समय क्षेत्र को लागू करता है। वह डिफ़ॉल्ट किसी भी समय बदल सकता है, इसलिए आपके परिणाम भिन्न हो सकते हैं। एक तर्क के रूप में स्पष्ट रूप से अपने वांछित/अपेक्षित समय क्षेत्र निर्दिष्ट करने के लिए बेहतर है।

ऐसे America/Montreal, Africa/Casablanca, या Pacific/Auckland रूप continent/region के प्रारूप में एक proper time zone name निर्दिष्ट करें,।0-या IST जैसे 3-4 अक्षर संक्षेप का उपयोग न करें क्योंकि सही समय क्षेत्र, मानकीकृत नहीं, और यहां तक ​​कि अनूठा (!) भी नहीं है।

ZoneId z = ZoneId.of("America/Montreal"); 
LocalDate today = LocalDate.now(z); 

जाव.टाइम गणित करने के लिए तीन महीने जोड़ें।

LocalDate threeMonthsLater = today.plusMonths(3) ; 

java.time

बारे java.time ढांचे जावा 8 और बाद में बनाया गया है। ये कक्षाएं परेशान पुराने legacy दिनांक-समय कक्षाएं जैसे java.util.Date, Calendar, & SimpleDateFormat प्रदान करती हैं।

Joda-Time प्रोजेक्ट, अब maintenance mode में, java.time कक्षाओं में माइग्रेशन की सलाह देता है।

और जानने के लिए, Oracle Tutorial देखें। और कई उदाहरणों और स्पष्टीकरणों के लिए स्टैक ओवरफ़्लो खोजें। विशिष्टता JSR 310 है।

जावा.टाइम कक्षाएं कहां प्राप्त करें?

  • Java SE 8, Java SE 9, और बाद में
    • में निर्मित।
    • एक बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
    • जावा 9 कुछ मामूली विशेषताओं और सुधारों को जोड़ता है।
  • Java SE 6 और Java SE 7
    • java.time कार्यक्षमता की ज्यादातर ThreeTen-Backport में जावा 6 & से 7 वापस भेजा गया है।
  • Android
    • java.time वर्गों के एंड्रॉयड बंडल कार्यान्वयन के बाद के संस्करण।
    • पहले एंड्रॉइड के लिए, ThreeTenABP प्रोजेक्ट थ्रीटेन-बैकपोर्ट (ऊपर उल्लिखित) का अनुकूलन करता है। How to use ThreeTenABP… देखें।

ThreeTen-Extra परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval, YearWeek, YearQuarter, और more

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