Kurzusok
/
Java
Java
/
Feladatok
/
Időpontfoglalás szépségszalonba
Időpontfoglalás szépségszalonba

Időpontfoglalás szépségszalonba

Tanulófeladat

Bevezetés

Dátum-idő

A Java 8-ban bevezetett java.time csomag több osztályt tartalmaz dátumokkal és idővel való munkához.

LocalDate

A java.time.LocalDate osztály egy időzóna nélküli dátumot reprezentál az ISO-8601 naptárrendszerben, például 2007-12-03:

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

A dátumok összehasonlíthatók más dátumokkal:

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

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

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

A LocalDate példány getterekkel rendelkezik, amelyekkel időrészeket kérhetsz le belőle:

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

date.getDayOfMonth();
// => 3

A LocalDate példány metódusokkal rendelkezik, amelyekkel időegységeket adhatsz hozzá:

Note

Ezek a metódusok egy új LocalDate példányt adnak vissza, és nem frissítik a meglévő példányt, mert a LocalDate osztály megváltoztathatatlan.

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

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

LocalDateTime

A java.time.LocalDateTime osztály egy időzóna nélküli dátum-időt reprezentál az ISO-8601 naptárrendszerben, például 2007-12-03T10:15:30:

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

Egy LocalDate példányt átalakíthatsz LocalDateTime-té:

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

Dátum-idők formázása

A LocalDate és a LocalDateTime egyaránt az ISO-8601 szabványos jelölést használja, amikor String-ből vagy String-be konvertál.

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

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

Ha egy LocalDate vagy LocalDateTime értéket ilyen módon, de eltérő formátummal próbálsz parse-olni egy String-ből, az nem lehetséges. Ehelyett dátumok egyéni formátummal való formázásához a java.time.format.DateTimeFormatter osztályt kell használnod:

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"

Egy területi beállítás is megadható az egyéni formátum létrehozásakor, hogy különböző régiókhoz formázz és parse-olj:

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

Utasítások

Ebben a feladatban egy 2012. szeptember 15-én megnyílt New York-i szépségszalon időpont-ütemezőjén fogsz dolgozni.

1. Időpont dátumának értelmezése

Valósítsd meg az AppointmentScheduler.schedule() metódust, amely egy időpont szöveges reprezentációját a megfelelő LocalDateTime értékké alakítja:

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

2. Ellenőrizd, hogy egy időpont már elmúlt-e

Valósítsd meg az AppointmentScheduler.hasPassed() metódust, amely egy időpontot vár, és ellenőrzi, hogy az időpont valamikor a múltban volt-e:

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

3. Ellenőrizd, hogy az időpont délutánra esik-e

Valósítsd meg az AppointmentScheduler.isAfternoonAppointment() metódust, amely egy időpontot vár, és ellenőrzi, hogy az időpont délutánra esik-e (>= 12:00 és < 18:00):

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

4. Írd le az időpont idejét és dátumát

Valósítsd meg az AppointmentScheduler.getDescription() metódust, amely egy időpontot vár, és visszaad egy leírást annak dátumáról és idejéről:

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. Add vissza az évforduló dátumát

Valósítsd meg az AppointmentScheduler.getAnniversaryDate() metódust, amely az idei évforduló dátumát adja vissza, ami szeptember 15-e:

AppointmentScheduler scheduler = new AppointmentScheduler();
scheduler.getAnniversaryDate()
// => LocalDate.of(<current year>, 9, 15)
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Java Exercism

Készen állsz elkezdeni a(z) Időpontfoglalás szépségszalonba feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Java nyelvet 26 fogalom158 feladat segítségével, valódi emberi mentorálással, mindez ingyen.