জাভাতে আমি কীভাবে এক দিন বাড়িয়ে দিতে পারি?


560

আমি এই ফর্ম্যাটে একটি তারিখ নিয়ে কাজ করছি: yyyy-mm-dd

আমি কীভাবে এই তারিখটি একদিন বাড়িয়ে তুলতে পারি?


10
আপনি যদি জাভা 8 বা নতুন ব্যবহার করেন আপনি নতুন তারিখ / সময় এপিআই ব্যবহার করতে পারেন। এই উত্তরটি দেখুন: stackoverflow.com/a/23910924/1115554
micha

4
নতুন ডেটটাইম ()। প্লাসডেস (1) .তো তারিখ () ???
পিট্রো

উত্তর:


684

এর মতো কিছুতে কৌশলটি করা উচিত:

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

50
@ এসকো, সি। রোল (ক্যালেন্ডার.আর, সত্য) মাসের শেষ দিন মাসে রোল করবে না।
স্যাম হাসলার

18
@ আম্মার এটি একটি খারাপ ধারণা যদি আপনি কোনও জিনিস বুঝতে না
পেরে থাকেন

13
আমি কয়েকটি জাভাডোকস উদ্ধৃত করব ... ক্যালেন্ডার DATE: "... এটি DAY_OF_MONTH এর প্রতিশব্দ।" আমি আশা করি জাভাডোকস স্পষ্ট করে বলবে যে এটি বৃহত্তর ক্ষেত্রগুলিকে বাড়িয়ে তুলবে (মাস এবং বছরের মতো)। ক্যালেন্ডার.রোল "বৃহত্তর ক্ষেত্র পরিবর্তন না করে প্রদত্ত সময়ের ক্ষেত্রে একক ইউনিট যোগ বা বিয়োগ করে (উপরে / নিচে)" .. আবার, "বৃহত্তর ক্ষেত্রগুলি" অস্পষ্ট তবে এটি স্যামের মন্তব্যের সাথে সামঞ্জস্যপূর্ণ বলে মনে হয়। আমি চাই পুরানো জাভাডক্স ঠিক করার জন্য স্ট্যাক ওভারফ্লো ছিল were
jcalfi314

4
ছেলেরা, দুর্ভাগ্যক্রমে, DATE, DAY_OF_MONTH বা এমনকি DAY_OF_YEAR ব্যবহার করে দিন যুক্ত করা একেবারে অকেজো - এগুলি সকলেই মডুলাস দ্বারা বর্ধিত হয়। সুতরাং ৩১-১২-১৯ considering০ এর ক্যালেন্ডার বিবেচনা করে (DAY_OF_YEAR, 1) যোগ করুন বা রোল () তবে রোল () শেষ পর্যন্ত অ্যাড () কল করবে, 01-01-1970 দেবে। আমার ধারণা একমাত্র সঠিক উপায় হ'ল মিলিসেকেন্ডের সাথে সময় নির্ধারণ করা। আমার হিসাবে, আমি আর কখনও ক্যালেন্ডার ক্লাস ব্যবহার করি না।
দিমিত্রি গ্রায়াজিন

14
@ বাগজার্গ: আপনারা ভুল বলেছেনadd()তারিখটি রোল করবে। দেখতে ideone
জিন হোমিনাল

211

সি # এর তুলনায় জাভা আট বলের চেয়ে পিছনে রয়েছে বলে মনে হয়। এই ইউটিলিটি পদ্ধতিটি জাভা এসই 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);

4
অবগতির জন্য, যেমন ভয়ঙ্কর বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 এবং পরে পাতাটা ক্লাস। ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
তুলিল বাউরক

79

java.time

জাভা 8 এবং তারপরে , java.Time প্যাকেজটি এটি বেশ স্বয়ংক্রিয়ভাবে তৈরি করে। ( টিউটোরিয়াল )

অনুমান Stringইনপুট এবং আউটপুট:

import java.time.LocalDate;

public class DateIncrementer {
  static public String addOneDay(String date) {
    return LocalDate.parse(date).plusDays(1).toString();
  }
}

3
অবগতির জন্য, উভয় ZonedDateDateTimeএবং OffsetDateTimeএছাড়াও আছে plusDaysএবং minusDaysপদ্ধতি ভাল হিসাবে হিসাবেLocalDate
বেসিল Bourque

@ বাসিলবার্ক শিওর, তবে প্রশ্নে যে তথ্য পাওয়া যায় তা হ'ল এ LocalDate
ড্যানিয়েল সি সোব্রাল

2
পুনঃটুইট আপনার পাঠকদের উন্নয়নের জন্য কেবল লিঙ্কগুলি যুক্ত করা হচ্ছে। সমালোচনা নয়।
তুলসী বাউর্ক

65

আমি অ্যাপাচি থেকে ডেট ইউটিলস ব্যবহার করতে পছন্দ করি । এই HTTP দেখুন: । এটি সহজেই কার্যকর হয় যখন আপনি এটি আপনার প্রকল্পের একাধিক জায়গা ব্যবহার করতে হয় এবং এটির জন্য আপনার একটি লাইনার পদ্ধতি লিখতে চান না।

এপিআই বলে:

অ্যাডডেস (তারিখের তারিখ, পূর্বের পরিমাণ): একটি নতুন অবজেক্ট ফিরিয়ে আনার তারিখে কয়েকটি দিন যুক্ত করে।

দ্রষ্টব্য যে এটি একটি নতুন তারিখ অবজেক্ট প্রদান করে এবং পূর্ববর্তীটিতে নিজেই পরিবর্তন করে না।



48

একটি ক্যালেন্ডার অবজেক্ট তৈরি করুন এবং পদ্ধতিটি অ্যাড ব্যবহার করুন (ক্যালেন্ডার। আপডেট, 1);


43

জোদা-সময় ( https://www.joda.org/joda-time/ ) একবার দেখুন।

DateTimeFormatter parser = ISODateTimeFormat.date();

DateTime date = parser.parseDateTime(dateString);

String nextDay = parser.print(date.plusDays(1));

3
আপনি ডেটটাইমটি নির্মাণের জন্য পার্সার কলগুলি সরাতে পারেন। ডেটটাইম ডেট = নতুন ডেটটাইম (ডেটস্ট্রিং) ব্যবহার করুন; তারপরে, নেক্সটডে হ'ল আইএসওডেটটাইম ফর্ম্যাট.ডেট () print মুদ্রণ (তারিখ.প্লাসডেস (1)); আরও তথ্যের জন্য joda-Time.sourceforge.net/api-release/org/joda/time/… দেখুন ।
MetroidFan2002

জোডা-টাইম ব্যবহার করে আরও বিশদ উদাহরণ কোডের জন্য, একই প্রশ্নের সাথে আমার উত্তর দেখুন , কীভাবে একটি তারিখে একদিন যুক্ত করা যায়?
বাসিল বাউরক

2
এফওয়াইআই ... জোদা-সময় প্রকল্পটি এখন রক্ষণাবেক্ষণের পদ্ধতিতে রয়েছে এবং জাভা.টাইম ক্লাসগুলিতে স্থানান্তরের পরামর্শ দেয় । উভয় প্রচেষ্টার নেতৃত্বে ছিলেন একই ব্যক্তি স্টিফেন কোলবর্ন। সুতরাং তারা অনুরূপ ধারণাগুলি ভাগ করে নেয় এবং মাইগ্রেশন কঠিন নয়।
তুলসী বাউরক

40

দয়া করে নোট করুন যে এই লাইনটি 24 ঘন্টা যোগ করেছে:

d1.getTime() + 1 * 24 * 60 * 60 * 1000

তবে এই লাইনটি একদিন যুক্ত করে

cal.add( Calendar.DATE, 1 );

দিবালোকের সঞ্চয়ের সময় পরিবর্তনের দিনগুলিতে (25 বা 23 ঘন্টা) আপনি বিভিন্ন ফলাফল পাবেন!


40

জাভা 8 তারিখ এবং সময় নিয়ে কাজ করার জন্য একটি নতুন এপিআই যুক্ত করেছে।

জাভা 8 দিয়ে আপনি নিম্নলিখিত কোডের লাইনগুলি ব্যবহার করতে পারেন:

// parse date from yyyy-mm-dd pattern
LocalDate januaryFirst = LocalDate.parse("2014-01-01");

// add one day
LocalDate januarySecond = januaryFirst.plusDays(1);

1
আমি অনুমান আপনি বোঝানো januaryFirst.plusDays(1)না date.plusDays(1)
তেবু

এটি কেবলমাত্র সমর্থিত অ্যান্ড্রয়েড হে developer.android.com/reference/java/time/package-summary.html
Subho

1
@ শুভ ২ Android এর আগে অ্যান্ড্রয়েডের জন্য, থ্রিটেনএবিপি প্রকল্পটি দেখুন যা থ্রিটেন-ব্যাকপোর্ট প্রকল্পটি রূপান্তর করে , বেশিরভাগ জাভা-সময়ের কার্যকারিতাটি জাভা and এবং জাভা 7.-এর সাথে অনুসরণ করে
বাসিল বার্ক

29

আপনি সরল java.util lib ব্যবহার করতে পারেন

Calendar cal = Calendar.getInstance(); 
cal.setTime(yourDate); 
cal.add(Calendar.DATE, 1);
yourDate = cal.getTime();

1
এই উত্তরটি তিন বছর আগে থেকে স্বীকৃত উত্তর সহ একাধিক উত্তরের সামগ্রীটিকে নকল করে । দয়া করে আপনার উত্তর মুছুন বা মান যুক্ত করতে সম্পাদনা করুন।
তুলসী বাউরক

3
এই উত্তরটি ক্লিনার, মাঝের তারিখটি বিশ্লেষণ করে না। "গৃহীত উত্তর" খুব বিশৃঙ্খল। এটা ভাল যে আপনি নিজের যোগ করেছেন,
তুলসীর

অবগতির জন্য, যেমন ভয়ঙ্কর বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 এবং পরে পাতাটা ক্লাস। ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
বাসিল বাউরক

সরাসরি উত্তর, সরাসরি কথা। আমি মিকির সাথে একমত, কেবলমাত্র
তুলসির

23
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 থেকে অন্য সংখ্যায় পরিবর্তন করা যেতে পারে।


1
যোগ করার আগে একটি নির্দিষ্ট তারিখ সেট করতে আপনি সি.সেটটাইম (তারিখ অবজেক্ট) এর মতো কিছু করতে পারেন।
লিনহ লিনো

আমার ইচ্ছা হ'ল ডিফল্ট জাভা প্যাকেজগুলি হ্যান্ডলিংয়ের তারিখগুলিকে কম
সংশ্লেষিত করে তুলবে

1
@ শান_আন্ড্রয়েড_দেভ জাভা.টাইম ক্লাসগুলি জাভা ৮-এ নির্মিত এবং পরে ভয়ানক পুরানো তারিখের সময় ক্লাসগুলি সাপ্ল্যান্ট করুন এবং আপনার ইচ্ছার উত্তর দিন। থ্রিটেন-ব্যাকপোর্ট এবং থ্রিটেনএবিপি প্রকল্পগুলিতে জাভা 6/7 এবং পূর্ববর্তী অ্যান্ড্রয়েডে ব্যাক- পোর্টডও রয়েছে । কোন প্রয়োজন নেই কি কখনো ব্যবহার করতে Dateবা Calendarআবার।
তুলসী বাউরক

19

আপনি যদি জাভা 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

আপনি যদি সিম্পলডেটফর্ম্যাটটি ব্যবহার করতে চান তবে এটি এটির মতো করুন।

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
বাসিল বাউরেক

1
আপনার উত্তর কমপক্ষে আরও চারটি উত্তরের সামগ্রীর পুনরাবৃত্তি করে। আপনার কীভাবে এর চেয়ে বেশি মূল্য যুক্ত হয় দয়া করে তা ব্যাখ্যা করুন বা অন্যথায় আপনি ডাউন-ভোট সংগ্রহের আগে মুছুন।
বাসিল বাউরক

16
long timeadj = 24*60*60*1000;
Date newDate = new Date (oldDate.getTime ()+timeadj);

এটি পুরানো তারিখ থেকে যুগের সময় থেকে মিলিসেকেন্ডগুলির সংখ্যা নেয় এবং 1 দিনের মূল্য মিলিসেকেন্ড যোগ করে তারপরে নতুন মানটি ব্যবহার করে একটি তারিখ তৈরি করতে তারিখ () পাবলিক কনস্ট্রাক্টর ব্যবহার করে। এই পদ্ধতিটি আপনাকে পুরো দিনই নয়, 1 দিন বা কোনও ঘন্টা / মিনিট যোগ করতে দেয়।


এটি সম্ভবত ওপি চেয়েছিল না; এটি দিবালোক সঞ্চয়-প্রকারের সামঞ্জস্যতা, লিপ সেকেন্ড ইত্যাদির জন্য কোনও ভাতা দেয় না।
মেরেক

1
দিবালোক সঞ্চয় সময় অঞ্চল / লোকাল দ্বারা পরিচালিত হওয়া উচিত। আমার উদাহরণটি দেখানো হয়েছিল যে কীভাবে ছোট মেয়াদ বাড়ানো যায়। যখন দিন বাড়িয়ে দেওয়া হয় তখন লিপ সেকেন্ডে সমস্যা হতে পারে তবে ঘন্টা যুক্ত করার সময় এটি সম্ভব হলেও কম হয় less
dvaey

15

যেহেতু জাভা 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জাভা time এবং তার পরে জাভা.টাইম ক্লাসে ক্লাস এবং থ্রিটেন-ব্যাকপোর্ট প্রকল্পে জাভা & এবং জাভা to- এর ব্যাক-বন্দরটি আরও বুদ্ধিমান পন্থা ।
বাসিল বার্ক


11

জাভা 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"));

11

এটি খুব সাধারণ, একটি সাধারণ কথায় ব্যাখ্যা করার চেষ্টা করা। নীচের মত আজকের তারিখ পান

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime());// print today's date
calendar.add(Calendar.DATE, 1);

এখন এই তারিখটির সাথে এক দিন এগিয়ে সেট করুন ক্যালেন্ডার.এডিডি পদ্ধতি অনুসারে যা গ্রহণ করে (ধ্রুবক, মান)। এখানে ধ্রুবকটি তারিখ, ঘন্টা, মিনিট, সেকেন্ড ইত্যাদি হতে পারে এবং মান ধ্রুবকের মান। এক দিনের মতো, সামনের ধ্রুবকটি হল ক্যালেন্ডার DATE.১০ এবং এর মান 1 কারণ আমরা একদিন এগিয়ে মান চাই।

System.out.println(calendar.getTime());// print modified date which is আগামীকাল তারিখ

ধন্যবাদ


7

অ্যাপাচি কমন্সে ইতিমধ্যে এই ডেট ইউটিলস.এডিডিডেস রয়েছে (তারিখের তারিখ, পূর্বের পরিমাণ) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addays%28java .util.Date,% 20int% 29 যা আপনি ব্যবহার করেন বা এটি আরও পরিষ্কার করার জন্য আপনি জোডটাইমটির সাথে যেতে পারেন।


7

কেবল স্ট্রিংয়ে তারিখ এবং পরবর্তী দিনের সংখ্যা পাস করুন

 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;

}

7

আপনি যদি সময়ের একটি একক যুক্ত করতে চান এবং আপনি আশা করেন যে অন্যান্য ক্ষেত্রগুলিও বর্ধিত হবে, আপনি নিরাপদে অ্যাড পদ্ধতি ব্যবহার করতে পারেন। নীচে উদাহরণ দেখুন:

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

কোনও গ্রহণযোগ্য উত্তর নেই এবং আমি অনুভব করেছি যে অন্য ক্ষেত্রগুলি পাশাপাশি আপডেট করা হয় তবে সামগ্রিক বিভ্রান্তি রয়েছে।
দশমাস

7
startCalendar.add(Calendar.DATE, 1); //Add 1 Day to the current Calender

4
অবদান রাখতে চাওয়ার জন্য আপনাকে ধন্যবাদ। তবে এটি ইতিমধ্যে অন্যান্য বেশ কয়েকটি জবাবের মধ্যে রয়েছে, তাই আমি সত্যিই কোনও লাভ দেখতে পাচ্ছি না ... এই আইএমএইচও ছাড়াও Calendar2019 এর দুর্বল নকশা করা এবং দীর্ঘ পুরানো শ্রেণি ব্যবহার করা উচিত নয়
ওলে ভিভি

6

আপনি যদি জাভা এসই 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();
  }

আপনি যদি জাভা এসই 8 এর পূর্বে কোনও সংস্করণ ব্যবহার করছেন তবে আমি আপনাকে জোদা-সময় ব্যবহার করার পরামর্শ দিচ্ছি

জোডা-টাইম জাভা তারিখ এবং সময় শ্রেণীর জন্য একটি মানের প্রতিস্থাপন সরবরাহ করে এবং জাভা এসই 8 এর পূর্বে জাভাটির জন্য ডি-ফ্যাক্টোর স্ট্যান্ডার্ড তারিখ এবং সময় গ্রন্থাগার is

   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);

1
java.timeঅংশটির জন্য আপনার প্যাটার্নটি ভুল। এটি dd/MM/uuuuজোডটাইমটির সমতুল্য হওয়া উচিত ।
TiiJ7

5

ব্যবহার করুন DateFormatএপিআই একটি তারিখ বস্তুর মধ্যে স্ট্রিং রূপান্তর, তারপর ব্যবহার Calendarএকদিন যোগ করার জন্য API- টি। আপনি যদি নির্দিষ্ট কোড উদাহরণ চান তবে আমাকে জানান, এবং আমি আমার উত্তর আপডেট করতে পারি।


3

আপনি যদি জাভা 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()আমি yyyy-MM-dd ফর্ম্যাটটি উত্পাদন করতে ব্যবহার করুন (এবং আপনি যদি জেদ করেন তবে মনে রাখবেন যে এটি মাসের কয়েক mmমিনিট MM)।
ওলে ভিভি

3

আপনি "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);  

5
প্রস্তাবনা Date2018 সালে বর্গ দরিদ্র উপদেশ। যেমন বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 & জাভা 9. দেখুন পাতাটা শ্রেণীর টিউটোরিয়াল ওরাকল দ্বারাLocalDateক্লাস ব্যবহার করে অন্যান্য উত্তরগুলি দেখুন ।
বাসিল বাউরক

হ্যাঁ এটি হ'ল, স্থানীয় তারিখ এটি করার সেরা উপায়,
শহীদ

তবে কিছু ফ্রেমওয়ার্ক যেমন জেএসএফের সময় API এর সাথে সামান্য একীকরণের সমস্যা রয়েছে তাই কখনও কখনও আপনার তারিখ ব্যবহার করা উচিত; প্লাস পরিবেশ জাভা <8
লুক্ক

1
@ লুক্ক জাভা.টাইম কার্যকারিতার বেশিরভাগটি থ্রিটেন-ব্যাকপোর্ট প্রকল্পে জাভা 6 এবং 7 এ ব্যাকপোর্ট করা হয়েছিলথ্রিটিনাএবিপি প্রকল্পে আরও পুরানো অ্যান্ড্রয়েডের সাথে অভিযোজিত । সুতরাং, রক্তাক্ত ভয়ঙ্কর পুরানো তারিখের সময় ক্লাসগুলিকে কখনও স্পর্শ করার দরকার নেই। অনেক ফ্রেমওয়ার্ক আপডেট করা হয়েছে। কিন্তু সব না. সুতরাং যদি আপনাকে অবশ্যই জাভা.টাইমে আপডেট করা হয়নি এমন পুরানো কোডের সাথে ইন্টারঅ্যাক্ট করতে হবে , জাভা.টাইমে আপনার নতুন কোডটি লিখুন এবং পুরানো ধরণেরগুলিতে পুরানো শ্রেণিতে যুক্ত হওয়া নতুন রূপান্তর পদ্ধতিগুলিকে কল করে / রূপান্তর করুন।
তুলসী বাউরক

1
এই কোডটি সময় অঞ্চলটির গুরুত্বপূর্ণ সমস্যাটিকে উপেক্ষা করে । যে কোনও মুহুর্তের জন্য, তারিখটি জোন অনুসারে বিশ্ব জুড়ে পরিবর্তিত হয়। SimpleDateFormatবর্গ দুর্ভাগ্যবশত কোন সময় জোন উদ্বুদ্ধ, পরোক্ষভাবে জেভিএম এর বর্তমান ডিফল্ট জোন প্রয়োগ। সুতরাং এই কোডের ফলাফলগুলি বর্তমান ডিফল্ট যাই হোক না কেন তারতম্য হতে পারে - এবং সেই সময়কালে রানটাইম চলাকালীন যে কোনও মুহুর্তে পরিবর্তিত হতে পারে ।
বাসিল বার্ক

3

এটা আসলে সহজ। একদিনে 86400000 মিলিসেকেন্ড রয়েছে। সুতরাং প্রথমে আপনি সিস্টেম থেকে মিলিসে বর্তমান সময়টি ব্যবহার System.currentTimeMillis()করে ৮৪০০০০০০ মিলি সেকেন্ড যুক্ত করে ক্লাসটি ব্যবহার 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();

স্ট্রিং ডেএফটারটিমমরো হবে 2019-05-11


এই কোডটি ভয়াবহ Dateশ্রেণীর ব্যবহার করে যা বহু বছর আগে আধুনিক জাভা.টাইম ক্লাসগুলির দ্বারা দমন করা হয়েছিল । তাই অনেক সহজ সহজভাবে ব্যবহার করার জন্য:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
বেসিল Bourque

2

আসুন ব্যবহারের বিষয়টি পরিষ্কার করুন: আপনি ক্যালেন্ডার পাটিগণিত করতে এবং java.util.Date দিয়ে শুরু / শেষ করতে চান ।

কিছু পন্থা:

  1. সরলডেট ফরমেটের সাথে স্ট্রিং এবং পিছনে রূপান্তর করুন : এটি একটি অদক্ষ সমাধান।
  2. লোকাল ডেটে রূপান্তর করুন : আপনি যে কোনও সময়ের তথ্য হারাবেন।
  3. লোকালডেটটাইমে রূপান্তর করুন : এতে আরও পদক্ষেপ জড়িত এবং আপনাকে সময় অঞ্চল সম্পর্কে চিন্তা করতে হবে।
  4. ডেট.জেটটাইম () দিয়ে পর্বে রূপান্তর করুন : এটি দক্ষ তবে আপনি মিলিসেকেন্ড দিয়ে গণনা করছেন।

Java.Time ব্যবহার বিবেচনা করুন। তাত্ক্ষণিক :

Date _now = new Date();
Instant _instant = _now.toInstant().minus(5, ChronoUnit.DAYS);
Date _newDate = Date.from(_instant);

1
Dateআধুনিক জাভা.টাইম ক্লাসের মতো ভয়াবহ উত্তরাধিকারের ক্লাসগুলি কখনও মিশ্রিত করবেন না InstantJava.time শ্রেণীর সম্পূর্ণরূপে উত্তরাধিকার শ্রেণীর স্থানচ্যুত। বিশেষত, Instantপ্রতিস্থাপন java.util.Date
বাসিল বাউর্কে

1
প্রশ্নের ঠিকানা দেয় না। আপনি একটি মুহুর্তের প্রতিনিধিত্বকারী ক্লাসগুলি ব্যবহার করছেন (অফসেট বা জোনের প্রেক্ষাপটে দিনের সাথে একটি তারিখ)। তবে প্রশ্নটি কেবল সময়ের সময় ব্যতীত এবং সময় অঞ্চল ছাড়াই তারিখ সম্পর্কে জিজ্ঞাসা করে। দেখুন সঠিক উত্তর শিক্ষক Sobral দ্বারা এবং সঠিক উত্তরটি Micha দ্বারা।
বাসিল বার্ক

0
Date newDate = new Date();
newDate.setDate(newDate.getDate()+1);
System.out.println(newDate);

14
fyi, তারিখ.সেট তারিখ () অবমূল্যায়ন করা হয়েছে
কেলি এস ফরাসী

আমার কম্পিউটারে মনে হচ্ছে এটি এক মাসের সীমানা জুড়ে কাজ করে। পরেSun Apr 30 16:25:33 CEST 2017 আসে Mon May 01 16:25:33 CEST 2017। যদিও এটি এখনও নিরুৎসাহিত সমাধান। একটি ভাল কারণের জন্যই কেবল পদ্ধতিটি হ্রাস করা হয় না, 2017 সালেও আমাদের কাছে Dateক্লাসের খুব ভাল বিকল্প রয়েছে ।
ওলে ভিভি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.