मैं इस प्रारूप में एक तिथि के साथ काम कर रहा हूं yyyy-mm-dd
:।
मैं इस तिथि को एक दिन कैसे बढ़ा सकता हूं?
मैं इस प्रारूप में एक तिथि के साथ काम कर रहा हूं yyyy-mm-dd
:।
मैं इस तिथि को एक दिन कैसे बढ़ा सकता हूं?
जवाबों:
कुछ इस तरह करना चाहिए ट्रिक:
String dt = "2008-01-01"; // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sdf.parse(dt));
c.add(Calendar.DATE, 1); // number of days to add
dt = sdf.format(c.getTime()); // dt is now the new date
add()
तारीख को रोल करेगा। आइडोन पर देखें ।
सी # की तुलना में आठ गेंद के पीछे जावा अच्छी तरह से दिखाई देती है। यह उपयोगिता विधि Calendar.add विधि (संभवतः एकमात्र आसान तरीका) का उपयोग करके जावा एसई 6 में करने का तरीका दिखाती है ।
public class DateUtil
{
public static Date addDays(Date date, int days)
{
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, days); //minus number would decrement the days
return cal.getTime();
}
}
पूछे जाने वाले प्रश्न के अनुसार, एक दिन जोड़ने के लिए, इसे निम्नानुसार कॉल करें:
String sourceDate = "2012-02-29";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = format.parse(sourceDate);
myDate = DateUtil.addDays(myDate, 1);
java.util.Date
, java.util.Calendar
और java.text.SimpleDateFormat
अब कर रहे हैं विरासत , द्वारा का स्थान ले लिया java.time जावा 8 और बाद में बनाया गया वर्गों। ओरेकल द्वारा ट्यूटोरियल देखें ।
जावा 8 और बाद में, java.time पैकेज इसे बहुत अधिक स्वचालित बनाता है। ( ट्यूटोरियल )
String
इनपुट और आउटपुट मानते हुए :
import java.time.LocalDate;
public class DateIncrementer {
static public String addOneDay(String date) {
return LocalDate.parse(date).plusDays(1).toString();
}
}
ZonedDateDateTime
और OffsetDateTime
भी है plusDays
और minusDays
तरीकों में अच्छी तरह से के रूप मेंLocalDate
LocalDate
।
मैं अपाचे से डेट यूटिल्स का उपयोग करना पसंद करता हूं । इस http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html चेक करें । यह विशेष रूप से आसान है जब आपको इसे अपनी परियोजना में कई स्थानों पर उपयोग करना होगा और इसके लिए अपनी एक लाइनर विधि नहीं लिखना होगा।
एपीआई का कहना है:
addDays (दिनांक दिनांक, अंतर राशि): किसी नई वस्तु को वापस करने की तारीख में कई दिन जोड़ता है।
ध्यान दें कि यह एक नया दिनांक ऑब्जेक्ट लौटाता है और पिछले एक ही में परिवर्तन नहीं करता है।
एक कैलेंडर ऑब्जेक्ट का निर्माण और विधि जोड़ने का उपयोग करें (Calendar.DATE, 1);
Joda-Time ( https://www.joda.org/joda-time/ ) पर एक नज़र डालें ।
DateTimeFormatter parser = ISODateTimeFormat.date();
DateTime date = parser.parseDateTime(dateString);
String nextDay = parser.print(date.plusDays(1));
कृपया ध्यान दें कि यह लाइन 24 घंटे जोड़ती है:
d1.getTime() + 1 * 24 * 60 * 60 * 1000
लेकिन यह रेखा एक दिन जुड़ जाती है
cal.add( Calendar.DATE, 1 );
दिन के उजाले बचत समय परिवर्तन (25 या 23 घंटे) के साथ आपको अलग-अलग परिणाम मिलेंगे!
Java 8 ने दिनांक और समय के साथ काम करने के लिए एक नया API जोड़ा।
जावा 8 के साथ आप कोड की निम्नलिखित पंक्तियों का उपयोग कर सकते हैं:
// parse date from yyyy-mm-dd pattern
LocalDate januaryFirst = LocalDate.parse("2014-01-01");
// add one day
LocalDate januarySecond = januaryFirst.plusDays(1);
januaryFirst.plusDays(1)
नहीं था date.plusDays(1)
।
आप साधारण java.util lib का उपयोग कर सकते हैं
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();
java.util.Date
, java.util.Calendar
और java.text.SimpleDateFormat
अब कर रहे हैं विरासत , द्वारा का स्थान ले लिया java.time जावा 8 और बाद में बनाया गया वर्गों। ओरेकल द्वारा ट्यूटोरियल देखें ।
Date today = new Date();
SimpleDateFormat formattedDate = new SimpleDateFormat("yyyyMMdd");
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1); // number of days to add
String tomorrow = (String)(formattedDate.format(c.getTime()));
System.out.println("Tomorrows date is " + tomorrow);
यह कल की तारीख देगा। c.add(...)
उपयुक्त वेतन वृद्धि के लिए मापदंडों को 1 से दूसरी संख्या में बदला जा सकता है।
Date
या Calendar
फिर से उपयोग करने की आवश्यकता नहीं है ।
यदि आप जावा 8 का उपयोग कर रहे हैं , तो इसे इस तरह से करें।
LocalDate sourceDate = LocalDate.of(2017, Month.MAY, 27); // Source Date
LocalDate destDate = sourceDate.plusDays(1); // Adding a day to source date.
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // Setting date format
String destDate = destDate.format(formatter)); // End date
यदि आप SimpleDateFormat का उपयोग करना चाहते हैं , तो इसे इस तरह से करें।
String sourceDate = "2017-05-27"; // Start date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(sourceDate)); // parsed date and setting to calendar
calendar.add(Calendar.DATE, 1); // number of days to add
String destDate = sdf.format(calendar.getTime()); // End date
LocalDate
कक्षा का उपयोग न करें LocalDateTime
।
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);
यह पुराने डेडिकेट के बाद से मिलीसेकंड की संख्या लेता है और मिलीसेकंड के 1 दिन के मूल्य को जोड़ता है, फिर नए मूल्य का उपयोग करके एक तारीख बनाने के लिए दिनांक () सार्वजनिक निर्माणकर्ता का उपयोग करता है। यह विधि आपको न केवल पूरे दिन बल्कि 1 दिन, या किसी भी घंटे / मिनट को जोड़ने की अनुमति देती है।
चूंकि Java 1.5 TimeUnit.DAYS.toMillis (1) मुझे अधिक साफ दिखता है।
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Date day = dateFormat.parse(string);
// add the day
Date dayAfter = new Date(day.getTime() + TimeUnit.DAYS.toMillis(1));
LocalDate
जावा 8 और बाद में जावा के लिए वर्ग है, और थ्री-बैकपोर्ट परियोजना में जावा 6 और जावा 7 के पीछे का पोर्ट मिला है ।
जावा 8 में सरल तरीका है:
Date.from(Instant.now().plusSeconds(SECONDS_PER_DAY))
Instant.now().plus( 1 , ChronoUnit.DAYS )
?
जावा 8 में आप उपयोग कर सकते हैं java.time.LocalDate
LocalDate parsedDate = LocalDate.parse("2015-10-30"); //Parse date from String
LocalDate addedDate = parsedDate.plusDays(1); //Add one to the day field
आप java.util.Date
निम्न प्रकार से ऑब्जेक्ट में परिवर्तित कर सकते हैं।
Date date = Date.from(addedDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
आप LocalDate
एक स्ट्रिंग में निम्नानुसार बना सकते हैं।
String str = addedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
यह बहुत आसान है, एक सरल शब्द में समझाने की कोशिश कर रहा है। आज की तारीख नीचे प्राप्त करें
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);
अब इस तिथि को कैलेंडर के अनुसार एक दिन आगे सेट करें। विधि जो (स्थिर, मान) लेती है। यहाँ निरंतर DATE, घंटे, मिनट, सेकंड आदि हो सकते हैं और मान स्थिरांक का मान है। एक दिन के लिए की तरह, निरंतर निरंतर Calendar.DATE है और इसका मान 1 है क्योंकि हम एक दिन आगे मूल्य चाहते हैं।
System.out.println(calendar.getTime());// print modified date which is
कल की तारीख
धन्यवाद
Apache Commons के पास पहले से ही यह DateUtils.addDays (दिनांक दिनांक, int राशि) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java है .util.Date,% 20int% 29 जो आप उपयोग करते हैं या आप इसे अधिक क्लीनर बनाने के लिए JodaTime के साथ जा सकते हैं।
बस स्ट्रिंग में तारीख और अगले दिनों की संख्या
private String getNextDate(String givenDate,int noOfDays) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
String nextDaysDate = null;
try {
cal.setTime(dateFormat.parse(givenDate));
cal.add(Calendar.DATE, noOfDays);
nextDaysDate = dateFormat.format(cal.getTime());
} catch (ParseException ex) {
Logger.getLogger(GR_TravelRepublic.class.getName()).log(Level.SEVERE, null, ex);
}finally{
dateFormat = null;
cal = null;
}
return nextDaysDate;
}
यदि आप समय की एक इकाई को जोड़ना चाहते हैं और आप अपेक्षा करते हैं कि अन्य क्षेत्रों में भी वृद्धि होगी, तो आप सुरक्षित रूप से ऐड पद्धति का उपयोग कर सकते हैं। नीचे उदाहरण देखें:
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.set(1970,Calendar.DECEMBER,31);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
cal.add(Calendar.DATE, -1);
System.out.println(simpleDateFormat1.format(cal.getTime()));
प्रिंट होगा:
1970-12-31
1971-01-01
1970-12-31
startCalendar.add(Calendar.DATE, 1); //Add 1 Day to the current Calender
Calendar
2019 में खराब डिज़ाइन और लंबे समय तक पुराने वर्ग का उपयोग नहीं करना चाहिए।
यदि आप जावा एसई 8 या उच्चतर का उपयोग करते हैं तो आपको नई तिथि / समय एपीआई का उपयोग करना चाहिए
int days = 7;
LocalDate dateRedeemed = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/YYYY");
String newDate = dateRedeemed.plusDays(days).format(formatter);
System.out.println(newDate);
यदि आप से परिवर्तित करना java.util.Date
चाहते हैं java.time.LocalDate
, तो आप इस विधि का उपयोग कर सकते हैं।
public LocalDate asLocalDate(Date date) {
Instant instant = date.toInstant();
ZonedDateTime zdt = instant.atZone(ZoneId.systemDefault());
return zdt.toLocalDate();
}
यदि आप Java SE 8 से पहले के संस्करण का उपयोग कर रहे हैं तो मैं आपको सलाह देता हूं कि आप Joda-Time का उपयोग करें
जोडा-टाइम जावा तिथि और समय कक्षाओं के लिए एक गुणवत्ता प्रतिस्थापन प्रदान करता है और जावा 8 से पहले जावा के लिए वास्तविक मानक तिथि और समय पुस्तकालय है।
int days = 7;
DateTime dateRedeemed = DateTime.now();
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/uuuu");
String newDate = dateRedeemed.plusDays(days).toString(formatter);
System.out.println(newDate);
java.time
भाग के लिए आपका पैटर्न गलत है। यह dd/MM/uuuu
JodaTime एक के बराबर होना चाहिए ।
DateFormat
स्ट्रिंग को दिनांक ऑब्जेक्ट में बदलने के लिए एपीआई का उपयोग करें , फिर Calendar
एक दिन जोड़ने के लिए एपीआई का उपयोग करें । मुझे बताएं कि क्या आप विशिष्ट कोड उदाहरण चाहते हैं, और मैं अपना उत्तर अपडेट कर सकता हूं।
यदि आप जावा 8 का उपयोग कर रहे हैं, java.time.LocalDate
और java.time.format.DateTimeFormatter
इस काम को काफी सरल बना सकते हैं।
public String nextDate(String date){
LocalDate parsedDate = LocalDate.parse(date);
LocalDate addedDate = parsedDate.plusDays(1);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-mm-dd");
return addedDate.format(formatter);
}
toString()
स्ट्रिंग का निर्माण करने के लिए उपयोग करें i yyyy-MM-dd प्रारूप (और यदि आप जोर देते हैं, तो याद रखें कि mm
वह MM
महीना है जबकि महीना है)।
आप इस पैकेज का उपयोग "org.apache.commons.lang3.time" से कर सकते हैं:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date myNewDate = DateUtils.addDays(myDate, 4);
Date yesterday = DateUtils.addDays(myDate, -1);
String formatedDate = sdf.format(myNewDate);
Date
2018 में कक्षा का सुझाव देना खराब सलाह है। जैसे परेशानी पुराने तिथि-समय कक्षाएं java.util.Date
, java.util.Calendar
और java.text.SimpleDateFormat
अब कर रहे हैं विरासत , द्वारा का स्थान ले लिया java.time जावा 8 और जावा 9. देखें में बनाया गया वर्गों ट्यूटोरियल ओरेकल द्वारा । LocalDate
कक्षा का उपयोग करके अन्य उत्तर देखें ।
SimpleDateFormat
वर्ग दुर्भाग्य से एक समय क्षेत्र injects, परोक्ष JVM के वर्तमान डिफ़ॉल्ट क्षेत्र लागू करने। इसलिए इस कोड के परिणाम वर्तमान डिफ़ॉल्ट जो भी हो, के अनुसार अलग-अलग होंगे - और वह डिफ़ॉल्ट रनटाइम के दौरान किसी भी समय बदल सकता है।
यह वास्तव में सरल है। एक दिन में 86400000 मिली सेकेंड होते हैं। तो पहले आप सिस्टम से मिली में वर्तमान समय प्राप्त करते System.currentTimeMillis()
हैं और फिर 84000000 मिली सेकेंड जोड़कर सिस्टम का उपयोग करते हैंDate
मिलीसेकंड के लिए ए डेट फॉर्मेट जनरेट करने के क्लास का ।
उदाहरण
String Today = new Date(System.currentTimeMillis()).toString();
स्ट्रिंग टुडे 2019-05-9 होगा
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
स्ट्रिंग टोमोरो 2019-05-10 होगा
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
स्ट्रिंग DayAfterTommorow 2019-05-11 होगा
Date
वर्ग का उपयोग करता है जिसे आधुनिक java.time कक्षाओं द्वारा वर्षों पहले दबा दिया गया था । बस उपयोग करने के लिए इतना सरल:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
चलो उपयोग के मामले को स्पष्ट करते हैं: आप कैलेंडर अंकगणित करना चाहते हैं और एक java.util.Date के साथ शुरू / अंत करते हैं ।
कुछ दृष्टिकोण:
Java.time.stant का उपयोग करने पर विचार करें :
Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);
Date
कि आधुनिक जावा.टाइम कक्षाएं जैसे Instant
। Java.time कक्षाएं पूरी तरह से विरासत वर्गों को प्रतिस्थापित। विशेष रूप से, Instant
बदलता है java.util.Date
।
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);
Sun Apr 30 16:25:33 CEST 2017
आता है Mon May 01 16:25:33 CEST 2017
। हालांकि यह अभी भी हतोत्साहित समाधान है। न केवल एक अच्छे कारण के लिए पदावनत विधि है, 2017 में भी हमारे पास Date
कक्षा के लिए बहुत अच्छे विकल्प हैं ।