বছর, মাস, দিন থেকে জাভা তারিখের অবজেক্ট তৈরি করা হচ্ছে


99
int day = Integer.parseInt(request.getParameter("day"));  // 25
int month = Integer.parseInt(request.getParameter("month")); // 12
int year = Integer.parseInt(request.getParameter("year")); // 1988

System.out.println(year);

Calendar c = Calendar.getInstance();
c.set(year, month, day, 0, 0);  

b.setDob(c.getTime());

System.out.println(b.getDob());  

আউটপুট হল:

1988
বুধ জানুয়ারী 25 00:00:08 IST 1989

আমি পাস করছি 25 12 1988কিন্তু আমি পেয়েছি 25 Jan 1989। কেন?


4
কোডে খ কী?
রহস্যগুয়ে

উত্তর:


113

মাসগুলি ক্যালেন্ডারে শূন্য-ভিত্তিক। সুতরাং 12 ডিসেম্বর 1 মাস হিসাবে ব্যাখ্যা করা হয়। ব্যবহার

c.set(year, month - 1, day, 0, 0);  

4
আইবিএম এপিআই ডিজাইনার, জাভাস্ক্রিপ্ট এপিআই ডিজাইনার। তা ছাড়া, সম্ভবত কেউ নেই। নোট করুন যে ক্যালেন্ডারটি এখন জাভা 8 জাভা.টাইম এপিআই দ্বারা অচলিত রয়েছে, যা সঠিক কাজ করে।
জেবি নিজেট

67

জাভা 8 এর আগে এটি আমার প্রিয় উপায়:

Date date = new GregorianCalendar(year, month - 1, day).getTime();

আমি বলব যে এটির চেয়ে ক্লিনার পদ্ধতি:

calendar.set(year, month - 1, day, 0, 0);

4
মাস Calendarধ্রুবক ব্যবহার করে নির্দিষ্ট করা যেতে পারে যেমন। Calendar.FEBRUARY
গীকারিস্ট

4
সতর্কতা অবলম্বন করুন, জাভা in-এ শূন্য থেকে মাস গণনা করা হত 7. ঝামেলা এড়াতে ধ্রুবকগুলি ব্যবহার করুন।
jediz

করার একটি বিষয় - কল করার সময় দু'জন আলাদা ফলাফল দেয় getTime()। কনস্ট্রাক্টরে তথ্য নির্ধারণ দিনের শুরুতে সময় দেয় যেখানে উত্তরোত্তর হিসাবে বর্তমান সময় ব্যবহার করা হয়। দস্তাবেজগুলি দেখুন । সুতরাং লোকেরা আসলে যা করার চেষ্টা করছে তা ধরে নিয়ে সম্ভবত প্রথমটি একটি আরও ভাল পদ্ধতির।
funct7

28

java.time

java.timeজাভা 8 মধ্যে নির্মিত ফ্রেমওয়ার্ক ব্যবহার করে

int year = 2015;
int month = 12;
int day = 22;
LocalDate.of(year, month, day); //2015-12-22
LocalDate.parse("2015-12-22"); //2015-12-22
//with custom formatter 
DateTimeFormatter.ofPattern formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate.parse("22-12-2015", formatter); //2015-12-22

আপনার কাছে সময় তথ্য প্রয়োজন হলে (ঘন্টা, মিনিট, সেকেন্ড) থেকে কিছু রূপান্তর ব্যবহার LocalDateকরতেLocalDateTime

LocalDate.parse("2015-12-22").atStartOfDay() //2015-12-22T00:00

ভাল উত্তর, তবে জানা থাকলে একটি সময় অঞ্চল নির্দিষ্ট করুন। এ LocalDateএর কোনও টাইম জোন নেই এবং তাই টাইমলাইনে সঠিক মুহুর্তটি উপস্থাপন করা হয় না। যদি আপনার প্রসঙ্গটি কোনও সময় অঞ্চলকে নির্দেশ করে তবে একটি ZonedDateTimeবস্তুটি পেতে এটি প্রয়োগ করুন : LocalDate.parse("2015-12-22").atStartOfDay( ZoneId.of( "America/Montreal" ) )
বেসিল বারউক

9

জাভার ক্যালেন্ডার উপস্থাপনা সেরা নয়, তারা জাভা ৮ এর জন্য এটিতে কাজ করছেন। আমি আপনাকে জোদা সময় ব্যবহার করার পরামর্শ দেব বা অন্য অনুরূপ গ্রন্থাগার।

জোডা টাইম লাইব্রেরি থেকে স্থানীয় তারিখ ব্যবহার করে এখানে একটি দ্রুত উদাহরণ দেওয়া হয়েছে:

LocalDate localDate = new LocalDate(year, month, day);
Date date = localDate.toDate();

এখানে আপনি একটি দ্রুত শুরু টিউটোরিয়াল অনুসরণ করতে পারেন।


6

জাভাডক দেখুন :

মাস - মান ক্যালেন্ডার ক্ষেত্র সেট করতে ব্যবহৃত মান। মাসের মান 0-ভিত্তিক। যেমন, 0 জানুয়ারীর জন্য।

সুতরাং, আপনার নির্ধারিত মাসটি পরের বছরের প্রথম মাস।


0

তারিখ, টাইমস্ট্যাম্প এবং সময়সীমার সাথে কাজ করার সময় আপনার জীবনকে সহজ করুন। থেকে হালডেটটাইম ব্যবহার করুন

http://sourceforge.net/projects/haldatetime/?source=directory

উদাহরণস্বরূপ আপনি আপনার ইনপুটটিকে এভাবে পার্স করার জন্য এটি ব্যবহার করতে পারেন:

HalDateTime mydate = HalDateTime.valueOf( "25.12.1988" );
System.out.println( mydate );   // will print in ISO format: 1988-12-25

পার্সিং এবং মুদ্রণের জন্য আপনি নিদর্শনগুলিও নির্দিষ্ট করতে পারেন।


4
দেখে মনে হচ্ছে আপনি নিজের লাইব্রেরি ক্লাস প্রচার করছেন? এটি সম্ভবত অনুমোদিত, তবে আপনি যদি এর প্রধান বিকাশকারী হন তবে যদি উল্লেখ করেন তবে এটি দেখতে সুন্দর লাগবে HalDateTime
ওলে ভিভি

ডাউনওয়েট করিনি। তবে তারিখের সাথে জীবন কখনও সহজ হয় না। আপনার লাইব্রেরি যে সত্য পরিবর্তন করবে না।
কিলটেক 27'19

ডাউনভোট কেন? আমার লাইব্রেরিটি ২০১৩ সালের তারিখের সাথে জেএসআর 310 এ বর্ণিত সমস্ত কার্যকারিতা জাভা.টাইমে উপলভ্য যা আমি ব্যক্তিগতভাবে খুঁজে পাই সেরা ডিজাইনের এপিআইগুলির মধ্যে একটি। আমি সম্পূর্ণরূপে এটি ব্যবহার করার পরামর্শ দিচ্ছি।
হাজো লেমকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.