ट्रैक
/
Java
Java
/
अभ्यास
/
ब्यूटी के लिए बुकिंग
ब्यूटी के लिए बुकिंग

ब्यूटी के लिए बुकिंग

सीखने का अभ्यास

परिचय

दिनांक-समय

Java 8 में शुरू किए गए java.time पैकेज में दिनांक और समय के साथ काम करने के लिए कई क्लास हैं।

LocalDate

java.time.LocalDate क्लास ISO-8601 कैलेंडर प्रणाली में बिना समय क्षेत्र वाले किसी दिनांक को दर्शाती है, जैसे 2007-12-03:

LocalDate date = LocalDate.of(2007, 12, 3);

दिनांकों की तुलना दूसरे दिनांकों से की जा सकती है:

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

किसी LocalDate इंस्टेंस में उससे समय के भाग निकालने के लिए गेटर मेथड होते हैं:

LocalDate date = LocalDate.of(2007, 12, 3);

date.getDayOfMonth();
// => 3

किसी LocalDate इंस्टेंस में उसमें समय की इकाइयाँ जोड़ने के लिए मेथड होते हैं:

Note

ये मेथड एक नया LocalDate इंस्टेंस लौटाते हैं और मौजूदा इंस्टेंस को नहीं बदलते, क्योंकि LocalDate क्लास अपरिवर्तनीय है।

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

LocalDateTime

java.time.LocalDateTime क्लास ISO-8601 कैलेंडर प्रणाली में बिना समय क्षेत्र वाले दिनांक-समय को दर्शाती है, जैसे 2007-12-03T10:15:30:

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

आप किसी LocalDate इंस्टेंस को LocalDateTime में बदल सकते हैं:

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

दिनांक-समय को फॉर्मेट करना

String से और String में बदलते समय LocalDate और LocalDateTime दोनों ISO-8601 की मानक संकेतन प्रणाली इस्तेमाल करते हैं।

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

किसी अलग फॉर्मेट का उपयोग करके इस तरह String से LocalDate या LocalDateTime को पार्स करने की कोशिश संभव नहीं है। इसके बजाय, कस्टम फॉर्मेट से दिनांक फॉर्मेट करने के लिए आपको java.time.format.DateTimeFormatter का उपयोग करना चाहिए:

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", parser);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

कस्टम फॉर्मेट बनाते समय अलग-अलग क्षेत्रों के लिए फॉर्मेट करने और पार्स करने हेतु कोई लोकेल भी निर्दिष्ट की जा सकती है:

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007

निर्देश

इस अभ्यास में आप न्यूयॉर्क के एक ब्यूटी सैलून के लिए अपॉइंटमेंट शेड्यूलर पर काम करेंगे। यह सैलून 15 सितंबर 2012 को खुला था।

1. अपॉइंटमेंट की तारीख पढ़िए

अपॉइंटमेंट की तारीख के टेक्स्ट रूप को पढ़कर उसे संबंधित LocalDateTime में बदलने के लिए AppointmentScheduler.schedule() मेथड लागू कीजिए:

AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.schedule("7/25/2019 13:45:00");
// => LocalDateTime.of(2019, 7, 25, 13, 45, 0)

2. जाँचिए कि अपॉइंटमेंट का समय बीत चुका है या नहीं

AppointmentScheduler.hasPassed() मेथड लागू कीजिए, जो अपॉइंटमेंट की तारीख लेता है और जाँचता है कि अपॉइंटमेंट का समय कहीं अतीत में तो नहीं था:

AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.hasPassed(LocalDateTime.of(1999, 12, 31, 9, 0, 0));
// => true

3. जाँचिए कि अपॉइंटमेंट दोपहर में है या नहीं

AppointmentScheduler.isAfternoonAppointment() मेथड लागू कीजिए, जो अपॉइंटमेंट की तारीख लेता है और जाँचता है कि अपॉइंटमेंट दोपहर में है या नहीं (>= 12:00 और < 18:00):

AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.isAfternoonAppointment(LocalDateTime.of(2019, 03, 29, 15, 0, 0))
// => true

4. अपॉइंटमेंट की तारीख और समय बताइए

AppointmentScheduler.getDescription() मेथड लागू कीजिए, जो अपॉइंटमेंट की तारीख लेता है और उस तारीख और समय का विवरण लौटाता है:

AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.getDescription(LocalDateTime.of(2019, 03, 29, 15, 0, 0))
// => "You have an appointment on Friday, March 29, 2019, at 3:00 PM."

5. सालगिरह की तारीख लौटाइए

AppointmentScheduler.getAnniversaryDate() मेथड लागू कीजिए, जो इस साल की सालगिरह की तारीख लौटाता है, यानी 15 सितंबर:

AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.getAnniversaryDate()
// => LocalDate.of(<current year>, 9, 15)
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Java Exercism

ब्यूटी के लिए बुकिंग शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Java को 26 कॉन्सेप्ट158 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।