जावा में मैं वर्तमान तिथि में एक महीना कैसे जोड़ सकता हूं?
जवाबों:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
आप अपाचे के कॉमन्स लैंग डेट यूटिल्स हेल्पर उपयोगिता वर्ग का उपयोग कर सकते हैं।
Date newDate = DateUtils.addMonths(new Date(), 1);
आप http://commons.apache.org/proper/commons-lang/ पर कॉमन्स लैंग जार डाउनलोड कर सकते हैं
LocalDate::plusMonths
उदाहरण:
LocalDate.now( )
.plusMonths( 1 );
समय क्षेत्र निर्दिष्ट करने के लिए बेहतर है।
LocalDate.now( ZoneId.of( "America/Montreal" )
.plusMonths( 1 );
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं जैसे पुराने परेशानी तिथि-समय वर्गों को प्रतिस्थापित java.util.Date
, .Calendar
, और java.text.SimpleDateFormat
। Joda समय टीम भी java.time के लिए प्रवास सलाह देता है।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें।
Java.time कार्यक्षमता की ज्यादातर में जावा 6 और 7 के लिए वापस भेजा जाता है ThreeTen-backport और आगे में एंड्रॉयड के लिए अनुकूलित ThreeTenABP ।
यदि आप केवल दिनांक चाहते हैं, तो LocalDate
कक्षा का उपयोग करें ।
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
Today.toString (): 2017-01-23
एक महीना जोड़ें।
LocalDate oneMonthLater = today.plusMonths( 1 );
oneMonthLater.toString (): 2017-02-23
शायद आप तारीख के साथ-साथ समय भी चाहते हैं।
पहले यूटीसी में वर्तमान क्षण को नैनोसेकंड के संकल्प के साथ प्राप्त करें ।
Instant instant = Instant.now();
महीने जोड़ने का मतलब है तिथियों का निर्धारण करना। और तिथियों का निर्धारण करने का अर्थ है समय क्षेत्र लागू करना। किसी भी क्षण के लिए, तिथि दुनिया भर में पूर्व में पूर्व में एक नए दिन के साथ बदलती रहती है। तो उस Instant
समय क्षेत्र में समायोजित करें ।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
अब अपना महीना जोड़ें। Java.time लीप महीने को संभालते हैं, और तथ्य यह है कि महीने लंबाई में भिन्न होते हैं।
ZonedDateTime zdtMonthLater = zdt.plusMonths( 1 );
इस तरह की गणना करते समय आप दिन के पहले क्षण को समय-समय पर समायोजित करना चाह सकते हैं। वह पहला क्षण हमेशा 00:00:00.0
ऐसा नहीं होता है ताकि java.time दिन के समय का निर्धारण कर सके।
ZonedDateTime zdtMonthLaterStartOfDay = zdtMonthLater.toLocalDate().atStartOfDay( zoneId );
Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date
, Calendar
, और SimpleDateFormat
।
Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।
अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है ।
Java.time कक्षाएं कहाँ से प्राप्त करें?
ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के लिए भविष्य के संभावित अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval
, YearWeek
, YearQuarter
, और अधिक ।
अपडेट: जोडा-टाइम परियोजना अब रखरखाव मोड में है। इसकी टीम java.time कक्षाओं में प्रवास की सलाह देती है। मैं इस अनुभाग को पोस्टरिटी के लिए बरकरार रख रहा हूं।
Joda समय पुस्तकालय एक स्मार्ट तरीके से महीने जोड़ने के लिए एक विधि प्रदान करता है।
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime now = DateTime.now( timeZone );
DateTime nextMonth = now.plusMonths( 1 );
आप दिन के पहले क्षण के लिए दिन के समय को समायोजित करके दिन पर ध्यान केंद्रित करना चाह सकते हैं।
DateTime nextMonth = now.plusMonths( 1 ).withTimeAtStartOfDay();
कैलंडर का उपयोग करें और इस कोड का प्रयास करें।
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date nextMonthFirstDay = calendar.getTime();
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
public Date addMonths(String dateAsString, int nbMonths) throws ParseException {
String format = "MM/dd/yyyy" ;
SimpleDateFormat sdf = new SimpleDateFormat(format) ;
Date dateAsObj = sdf.parse(dateAsString) ;
Calendar cal = Calendar.getInstance();
cal.setTime(dateAsObj);
cal.add(Calendar.MONTH, nbMonths);
Date dateAsObjAfterAMonth = cal.getTime() ;
System.out.println(sdf.format(dateAsObjAfterAMonth));
return dateAsObjAfterAMonth ;
}`
आप org.apache.commons.lang3.time पैकेज में DateUtils वर्ग का उपयोग कर सकते हैं
DateUtils.addMonths(new Date(),1);
यदि आपको एक-लाइनर (यानी जैस्पर रिपोर्ट फॉर्मूले के लिए) की आवश्यकता है और अगर समायोजन ठीक एक महीना नहीं है तो बुरा मत मानना (अर्थात "30 दिन" पर्याप्त है):
new Date($F{invoicedate}.getTime() + 30L * 24L * 60L * 60L * 1000L)
आप इस तरह का उपयोग कर सकते हैं;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String d = "2000-01-30";
Date date= new Date(sdf.parse(d).getTime());
date.setMonth(date.getMonth() + 1);
एक महीने के बाद के दिन को खोजने के लिए, यह देखना जरूरी है कि आज का महीना किस दिन है।
इसलिए यदि दिन कोड के बाद महीने का पहला दिन है
Calendar calendar = Calendar.getInstance();
Calendar calFebruary = Calendar.getInstance();
calFebruary.set(Calendar.MONTH, Calendar.FEBRUARY);
if (calendar.get(Calendar.DAY_OF_MONTH) == 1) {// if first day of month
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date nextMonthFirstDay = calendar.getTime();
System.out.println(nextMonthFirstDay);
}
यदि दिन महीने के अंतिम दिन है, तो निम्नलिखित कोड चलाएं।
else if ((calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH))) {// if last day of month
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
System.out.println(nextMonthLastDay);
}
यदि दिन निम्नलिखित कोड में फरवरी चलाने में है
else if (calendar.get(Calendar.MONTH) == Calendar.JANUARY
&& calendar.get(Calendar.DAY_OF_MONTH) > calFebruary.getActualMaximum(Calendar.DAY_OF_MONTH)) {// control of february
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
System.out.println(nextMonthLastDay);
}
निम्नलिखित कोड अन्य मामलों के लिए उपयोग किए जाते हैं।
else { // any day
calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date theNextDate = calendar.getTime();
System.out.println(theNextDate);
}
java.util.Date
, java.util.Calendar
और java.text.SimpleDateFormat
अब विरासत है , जावा 8 और बाद में निर्मित java.time कक्षाओं द्वारा ली गई । ओरेकल द्वारा ट्यूटोरियल देखें ।
Date dateAfterOneMonth = new DateTime(System.currentTimeMillis()).plusMonths(1).toDate();
यह विधि वर्तमान तिथि के साथ-साथ 1 माह का रिटर्न भी देती है।
public Date addOneMonth() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, 1);
return cal.getTime();
}`
public class StringSplit {
public static void main(String[] args) {
// TODO Auto-generated method stub
date(5, 3);
date(5, 4);
}
public static String date(int month, int week) {
LocalDate futureDate = LocalDate.now().plusMonths(month).plusWeeks(week);
String Fudate = futureDate.toString();
String[] arr = Fudate.split("-", 3);
String a1 = arr[0];
String a2 = arr[1];
String a3 = arr[2];
String date = a3 + "/" + a2 + "/" + a1;
System.out.println(date);
return date;
}
}
आउटपुट:
10/03/2020
17/03/2020