আমি এই ফর্ম্যাটে একটি তারিখ নিয়ে কাজ করছি: 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()
তারিখটি রোল করবে। দেখতে ideone ।
সি # এর তুলনায় জাভা আট বলের চেয়ে পিছনে রয়েছে বলে মনে হয়। এই ইউটিলিটি পদ্ধতিটি জাভা এসই 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
এখন উত্তরাধিকার দ্বারা supplanted 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 দেখুন: । এটি সহজেই কার্যকর হয় যখন আপনি এটি আপনার প্রকল্পের একাধিক জায়গা ব্যবহার করতে হয় এবং এটির জন্য আপনার একটি লাইনার পদ্ধতি লিখতে চান না।
এপিআই বলে:
অ্যাডডেস (তারিখের তারিখ, পূর্বের পরিমাণ): একটি নতুন অবজেক্ট ফিরিয়ে আনার তারিখে কয়েকটি দিন যুক্ত করে।
দ্রষ্টব্য যে এটি একটি নতুন তারিখ অবজেক্ট প্রদান করে এবং পূর্ববর্তীটিতে নিজেই পরিবর্তন করে না।
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar cal = Calendar.getInstance();
cal.setTime( dateFormat.parse( inputString ) );
cal.add( Calendar.DATE, 1 );
একটি ক্যালেন্ডার অবজেক্ট তৈরি করুন এবং পদ্ধতিটি অ্যাড ব্যবহার করুন (ক্যালেন্ডার। আপডেট, 1);
জোদা-সময় ( 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 ঘন্টা) আপনি বিভিন্ন ফলাফল পাবেন!
জাভা 8 তারিখ এবং সময় নিয়ে কাজ করার জন্য একটি নতুন এপিআই যুক্ত করেছে।
জাভা 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
এখন উত্তরাধিকার দ্বারা supplanted 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
আপনি যদি সিম্পলডেটফর্ম্যাটটি ব্যবহার করতে চান তবে এটি এটির মতো করুন।
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 দিন বা কোনও ঘন্টা / মিনিট যোগ করতে দেয়।
যেহেতু জাভা 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- এর ব্যাক-বন্দরটি আরও বুদ্ধিমান পন্থা ।
জাভাতে 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.১০ এবং এর মান 1 কারণ আমরা একদিন এগিয়ে মান চাই।
System.out.println(calendar.getTime());// print modified date which is
আগামীকাল তারিখ
ধন্যবাদ
অ্যাপাচি কমন্সে ইতিমধ্যে এই ডেট ইউটিলস.এডিডিডেস রয়েছে (তারিখের তারিখ, পূর্বের পরিমাণ) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addays%28java .util.Date,% 20int% 29 যা আপনি ব্যবহার করেন বা এটি আরও পরিষ্কার করার জন্য আপনি জোডটাইমটির সাথে যেতে পারেন।
কেবল স্ট্রিংয়ে তারিখ এবং পরবর্তী দিনের সংখ্যা পাস করুন
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();
}
আপনি যদি জাভা এসই 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);
java.time
অংশটির জন্য আপনার প্যাটার্নটি ভুল। এটি dd/MM/uuuu
জোডটাইমটির সমতুল্য হওয়া উচিত ।
ব্যবহার করুন DateFormat
এপিআই একটি তারিখ বস্তুর মধ্যে স্ট্রিং রূপান্তর, তারপর ব্যবহার Calendar
একদিন যোগ করার জন্য API- টি। আপনি যদি নির্দিষ্ট কোড উদাহরণ চান তবে আমাকে জানান, এবং আমি আমার উত্তর আপডেট করতে পারি।
আপনি যদি জাভা 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
)।
আপনি "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
এখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 & জাভা 9. দেখুন পাতাটা শ্রেণীর টিউটোরিয়াল ওরাকল দ্বারা । LocalDate
ক্লাস ব্যবহার করে অন্যান্য উত্তরগুলি দেখুন ।
SimpleDateFormat
বর্গ দুর্ভাগ্যবশত কোন সময় জোন উদ্বুদ্ধ, পরোক্ষভাবে জেভিএম এর বর্তমান ডিফল্ট জোন প্রয়োগ। সুতরাং এই কোডের ফলাফলগুলি বর্তমান ডিফল্ট যাই হোক না কেন তারতম্য হতে পারে - এবং সেই সময়কালে রানটাইম চলাকালীন যে কোনও মুহুর্তে পরিবর্তিত হতে পারে ।
এটা আসলে সহজ। একদিনে 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 )
আসুন ব্যবহারের বিষয়টি পরিষ্কার করুন: আপনি ক্যালেন্ডার পাটিগণিত করতে এবং java.util.Date দিয়ে শুরু / শেষ করতে চান ।
কিছু পন্থা:
Java.Time ব্যবহার বিবেচনা করুন। তাত্ক্ষণিক :
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
ক্লাসের খুব ভাল বিকল্প রয়েছে ।