java - जावा में डेट ऑब्जेक्ट से X दिन कैसे घटाएं?




date datetime (7)

मैं कुछ ऐसा करना चाहता हूं:

Date date = new Date(); // current date
date = date - 300; // substract 300 days from current date and I want to use this "date"

यह कैसे करना है?


@ जिगार जोशी यह अच्छा जवाब है, और निश्चित रूप से @Tim उपयोग करने की सिफारिश भी है। Joda-Time

मैं केवल java.util.Date से दिनों को घटाने के लिए और अधिक संभावनाएं जोड़ना चाहता हूं।

अपाचे-कॉमन्स

एक संभावना apache-commons-lang । आप DateUtils का उपयोग करके इसे निम्न प्रकार से कर सकते हैं:

Date dateBefore30Days = DateUtils.addDays(new Date(),-30);

बेशक commons-lang निर्भरता केवल तारीख को घटाने के लिए जोड़ें, शायद यह एक अच्छा विकल्प नहीं है, हालांकि यदि आप पहले से ही commons-lang का उपयोग कर रहे हैं तो यह एक अच्छी पसंद है। addYears , addMonths , addWeeks को addYears लिए सुविधाजनक तरीके भी हैं, DateUtils पर एक नज़र डालें।

जावा 8

एक और संभावना है कि LocalDate 8 minusDays(long days) विधि का उपयोग कर जावा 8 से नए LocalDate का लाभ उठाना:

LocalDate dateBefore30Days = LocalDate.now(ZoneId.of("Europe/Paris")).minusDays(30);

आप SimpleDateFormat के साथ कैलेंडर के साथ आसानी से घटा सकते हैं

 public static String subtractDate(String time,int subtractDay) throws ParseException {


        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);
        cal.setTime(sdf.parse(time));
        cal.add(Calendar.DATE,-subtractDay);
        String wantedDate = sdf.format(cal.getTime());

        Log.d("tag",wantedDate);
        return wantedDate;

    }

जावा 8 के साथ यह वास्तव में अब आसान है:

 LocalDate date = LocalDate.now().minusDays(300);

नई एपीआई के लिए एक महान गाइड here पाया जा सकता here


जावा 8 टाइम एपीआई:

Instant now = Instant.now(); //current date
Instant before = now.minus(Duration.ofDays(300));
Date dateBefore = Date.from(before);

मैं वास्तव में आपको यहां मिली डेटटाइम लाइब्रेरी का उपयोग करने की सलाह दूंगा: http://joda-time.sourceforge.net/

यह मेरी पहली निर्भरताओं में से एक है जिसे मैं लगभग हर एक जावा प्रोजेक्ट में जोड़ता हूं।

यदि आपके पास कुछ विरासत कोड हैं जो तिथियों या कैलेंडर की आवश्यकता है तो आप इसे डेटटाइम से वापस परिवर्तित कर सकते हैं।

तो 300 दिनों का घटाना उतना ही आसान होगा जितना:

Date date = new Date(); // Or where ever you get it from
Date daysAgo = new DateTime(date).minusDays(300).toDate();

मैंने कार्य को आसान बनाने के लिए एक फ़ंक्शन बनाया है।

  • तिथि के 7 दिनों के बाद स्ट्रिंग: dateCalculate(dateString,"yyyy-MM-dd",7);

  • 7 दिनों तक अद्यतित होने के लिए स्ट्रिंग: dateCalculate(dateString,"yyyy-MM-dd",-7);

public static String dateCalculate(String dateString, String dateFormat, int days) {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat s = new SimpleDateFormat(dateFormat);
    try {
        cal.setTime(s.parse(dateString));
    } catch (ParseException e) {
        e.printStackTrace();
    }
    cal.add(Calendar.DATE, days);
    return s.format(cal.getTime());
}

c1.set(2017, 12 , 01); //Ex: 1999 jan 20    //System.out.println("Date is : " + sdf.format(c1.getTime()));
  c1.add(Calendar.MONTH, -2); // substract 1 month
  System.out.println
  ("Date minus 1 month : "
      + sdf.format(c1.getTime()));




java.util.date