{"id":481,"date":"2021-04-08T05:02:59","date_gmt":"2021-04-08T05:02:59","guid":{"rendered":"http:\/\/scrutineer.co.kr\/wordpress\/?p=481"},"modified":"2021-04-08T05:19:15","modified_gmt":"2021-04-08T05:19:15","slug":"%eb%aa%a8%eb%8d%98-%ec%9e%90%eb%b0%94-%ec%9d%b8-%ec%95%a1%ec%85%98-12%ec%9e%a5","status":"publish","type":"post","link":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/2021\/04\/08\/%eb%aa%a8%eb%8d%98-%ec%9e%90%eb%b0%94-%ec%9d%b8-%ec%95%a1%ec%85%98-12%ec%9e%a5\/","title":{"rendered":"\ubaa8\ub358 \uc790\ubc14 \uc778 \uc561\uc158 12\uc7a5"},"content":{"rendered":"\n<h2 class=\"has-large-font-size wp-block-heading\">LocalDate, LocalTime, LocalDateTime  \uc54c\uc544\ubcf4\uc790<\/h2>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"LocalDateTime-LocalDate&amp;LocalTime&amp;LocalDateTime\" style=\"font-size:25px\">LocalDate &amp; LocalTime &amp; LocalDateTime<\/h1>\n\n\n\n<h2 class=\"has-medium-font-size wp-block-heading\" id=\"LocalDateTime-LocalDate(feat.java8doc)\">LocalDate (feat. java8 doc)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc2e4\uc0c1 LocalDate \uc640 LocalTime\uc740 \ub300\ub3d9\uc18c\uc774\ud55c \uc810\uc774 \ub9ce\uae30\uc5d0, LocalTime\uacfc LocalDateTime\uc740 \uc0dd\ub7b5\ud55c\ub2e4.(Java Doc\ub3c4 \ud2b9\ubcc4\ud788 \ucc28\uc774\uc810\uc5d0 \ub300\ud574 \uae30\uc220\ud55c \uc0ac\ud56d\uc774 \uc5c6\uc74c&#8230;.)<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>LocalTime\ub9cc\uc758 \ud2b9\uc9d5<\/p><cite>LocalDate\uc758 \uc2dc\uac04 \ubc84\uc804\uc774\uace0&#8230;..\u314b \ucd08\uc758 \ub2e8\uc704\uc2dc\uac04\uc774 &#8216;nanosecond&#8217;\uc774\ub2e4.<\/cite><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>LocalDateTime\ub9cc\uc758 \ud2b9\uc9d5<\/p><cite>\ubb50 \uadf8\ub7f0\uac70 \uc5c6\ub2e4. \uadf8\ub0e5 LocalDate + LocalTime\uc778 spec\uc784&#8230;.<\/cite><\/blockquote>\n\n\n\n<ul class=\"wp-block-list\"><li>Immutable\ud55c \uac1d\uccb4\uc774\uba70, \ubcc4\ub3c4\uc758 &#8216;\uc2dc\uac04&#8217; \uc815\ubcf4\ub294 \uc800\uc7a5 &amp; \ud45c\ud604\ud558\uc9c0 \uc54a\ub294\ub2e4. (\ud0c0\uc784\uc874 \ud3ec\ud568)<\/li><li>value-based \ud074\ub798\uc2a4\uc774\ubbc0\ub85c, ==, hashcode, synchronization \uc73c\ub85c \uc778\ud55c \ube44\uad50\ub294 \uc608\uce21 \ubd88\uac00\ub2a5\ud55c \uacb0\uacfc\ub97c \uac00\uc9c0\ubbc0\ub85c, \uac1d\uccb4\uac12 \ube44\uad50\ub97c \ud558\uace0\uc790 \ud560 \ub54c\uc5d0\ub294 equals \uba54\uc18c\ub4dc\ub97c \uc0ac\uc6a9\ud574\ub77c!<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\uae08 \ub354 \uc544\ub294 \ucc99\uc744 \ud558\uace0 \uc2f6\ub2e4\uba74 : ISO-8601\uce98\ub9b0\ub354 \uc2dc\uc2a4\ud15c\uc744 \uc774\uc6a9\ud55c\ub2e4\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131\uc744 \ud558\uace0 \uc2f6\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ucf54\ub4dc\ub97c \uc791\uc131\ud574 \uc8fc\uba74 \ub41c\ub2e4. (of\uba54\uc18c\ub4dc \uc774\uc6a9)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">LocalDate date = LocalDate.of(2019,8,23); \/\/ 2019-08-23\nLocaalDate now = LocalDate.now();\nint year = date.getYear();\nMonty month = date.getMonth();\nint day = date.getDayOfmonth();\n \n \nint year = date.get(ChronoField.YEAR);\n\/\/...........\uc774\ud558 \uc0dd\ub7b5<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>enum \uac1d\uccb4\uc778 ChronoField\ub97c arg\ub85c \ud558\uc5ec \ub0a0\uc9dc\uac12 \ubc18\ud658\uc744 \ubc1b\ub294 \uac83\ub3c4 \uac00\ub2a5\ud568. (\uc0c1\uae30 \ucf54\ub4dc\ube14\ub7ed \ucc38\uc870)<ul><li>ChronoField implements TemporalField<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/time\/LocalTime.html#get-java.time.temporal.TemporalField-\" target=\"_blank\">https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/time\/LocalTime.html#get-java.time.temporal.TemporalField-<\/a><\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">String\uc744 \ubc1b\uc544 \ud30c\uc2f1\ud558\ub294 \uae30\ub2a5\ub3c4 \uc9c0\uc6d0\ud574 \uc90c<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">LocalDate date = LocalDate.parse(\"2019-08-23\");<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>\uc815\ud615\ud654\ub41c YYYY-MM-DD \ud3ec\uba67 \ubfd0\ub9cc \uc544\ub2c8\ub77c, DateTimeFormatter\ub97c arg\ub85c \ud558\uc5ec \uc815\ud615\ud654\ub418\uc5b4\uc788\uc9c0 \uc54a\uc740 \ub0a0\uc9dc \ud3ec\uba67\ud305\uc758 \uacbd\uc6b0\ub85c \ucc98\ub9ac\ub3c4 \uac00\ub2a5.<ul><li>\ud3ec\uba67\ud305\uc774 \ub9de\uc9c0 \uc54a\ub294 \uacbd\uc6b0, DateTimeParseException \uc744 \ubc1c\uc0dd\uc2dc\ud0b4. (implements RuntimeException)<\/li><\/ul><\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"has-large-font-size wp-block-heading\">Instant\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc790<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>LocalDateTime\uc740 \uc0ac\ub78c \uad00\uc810\uc5d0\uc11c \ubcf4\uae30 \ud3b8\ud55c \uc2dc\uac04\ub2e8\uc704(\ub144,\uc6d4,\uc77c,\uc2dc,\ubd84,\ucd08)<\/li><li>Instant\ub294 \ucef4\ud4e8\ud130 \uad00\uc810\uc5d0\uc11c \ubcf4\uae30 \ud3b8\ud55c \uc2dc\uac04\ub2e8\uc704.<ul><li>\uc775\ud788 \uc54c\uace0 \uc788\ub294 Unix timestamp. \uae30\uc900\uc2dc\uac04 : 1970\/01\/01 00:00:00<\/li><\/ul><\/li><li>\ub098\ub178\ucd08 \ub2e8\uc704\uae4c\uc9c0 \uc800\uc7a5<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc778\uc2a4\ud134\uc2a4 \uc0dd\uc131 \ubc29\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Instant.ofEpochSecond(3); \/\/ 1970\/01\/01 00:00:03\nInstant.ofEpochSecond(4, 1000000000); \/\/ 1970\/01\/01 00:00:05 &lt;-- \uae30\uc900\uc2dc\uac04\uc5d0\uc11c 4\ucd08\ub97c \ub354\ud55c \ud6c4, 1\uc5b5 \ub098\ub178\ucd08\ub97c \ub354\ud558\uc5ec 5\ucd08\n\n\/\/human readable\ud55c \uac12\uc744 \uc5bb\uace0 \uc2f6\uc73c\uba74\nint day = Instant.now().get(ChronoField.DAY_OF_MONTH);<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>\ub098\ub178\ucd08 \ub2e8\uc704 spec\uae4c\uc9c0 \uc800\uc7a5\ud558\uae30 \uc704\ud574\uc11c\ub294, \ud604\uc7ac primitive data type\uc758 long \ubcc0\uc218 \ud558\ub098\ub9cc\uc73c\ub85c\ub294 \uc2dc\uac04 \uc815\ubcf4\ub97c \ub2e4 \uc800\uc7a5\ud560 \uc218\uac00 \uc5c6\uc74c<ul><li>private final long seconds;<\/li><li>private final int nanos;<\/li><\/ul><\/li><li>\uc774\ub807\uac8c \ucd08\/\ub098\ub178\ucd08 \ub2e8\uc704\ub97c \uac01\uac01 long, int \ud0c0\uc785\uc73c\ub85c \uc800\uc7a5\ud558\uc5ec, \uc2dc\uac04\uc758 \ud45c\ud604 \ubc94\uc704\ub294 \ubb34\ud55c\ub300\uc5d0 \uac00\uae5d\uac8c \ub298\ub838\ub2e4.<ul><li>-1000000000-01-01T00:00Z \ubd80\ud130,&nbsp;1000000000-12-31T23:59:59.999999999Z \uae4c\uc9c0. (\uae30\uc6d0\uc804 10\uc5b5\ub144 ~ \uc11c\uae30 10\uc5b5\ub144)<\/li><\/ul><\/li><li>\uae30\ud0c0&#8230; \uc724\ub144\uacfc \uac19\uc740 \uac1c\ub150\uc73c\ub85c \uc9c0\uad6c\uc758 \uc790\uc804\uc2dc\uac04\uacfc \ucd08 \ub2e8\uc704\uc758 \ubcf4\uc815\uc744 \uc704\ud55c spec\uc774 Time-scale\ub77c\ub294 \ud56d\ubaa9\uc73c\ub85c \ubb38\uc11c\uc5d0 \uae30\uc220 \ub418\uc5b4\uc788\uc73c\ub2c8 \ubb54\uac00 \ub354 \uc544\ub294 \ucc99\uc744 \ud558\uace0 \uc2f6\ub2e4\uba74 \ucc38\uace0\ud558\uc2dc\uba74 \ub420 \ub4ef<\/li><\/ul>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"has-large-font-size wp-block-heading\">Duration\uacfc Period\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc790<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\ud2b9\uc815 \uc2dc\uac04\uc774 \uc544\ub2cc, &#8216;\uae30\uac04&#8217; \ub0b4\uc9c0\ub294 \uc9c0\uc18d\uc2dc\uac04 \ub2e8\uc704\ub97c \ud45c\ud604\ud558\uace0 \uc2f6\uc740 \uacbd\uc6b0\uc5d0\ub294 Duration &amp; Period\ub97c \uc774\uc6a9\ud55c\ub2e4<\/li><li>Temporal \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud55c LocalDate,LocalTime,LocalDateTime,Instant \uac1d\uccb4\uc758 \uae30\uac04 \uc815\ubcf4\ub97c \uad00\ub9ac\ud558\uac8c \ud574 \uc8fc\ub294 \ud074\ub798\uc2a4\uc774\ub2e4.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"LocalDateTime-Duration\" style=\"font-size:25px\">Duration<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Instant \ud074\ub798\uc2a4\uc640 \uac19\uc740 \uc800\uc7a5 \ubc29\uc2dd\uc744 \uac16\uace0 \uc788\ub2e4. long \ubcc0\uc218 \ud558\ub098\ub9cc\uc73c\ub85c\ub294 \uc2dc\uac04 \uc815\ubcf4\ub97c \ub2e4 \uc800\uc7a5\ud560 \uc218 \uc5c6\uae30\uc5d0, long(\ucd08) &amp; int(\ub098\ub178\ucd08) \ub450\uac1c\uc758 \uc778\uc2a4\ud134\uc2a4 \ubcc0\uc218\ub97c \ub0b4\uc7a5\ud55c \ucc44\ub85c \uae30\uac04\uc744 \ud45c\ud604\ud55c\ub2e4.<ul><li><strong>\uc8fc\uc758\uc0ac\ud56d : \uadf8\ub798\uc11c &#8216;\ucd08&#8217; \uc815\ubcf4\ub97c \uac16\uace0 \uc788\ub294 Temporal \uac1d\uccb4\ub9cc \uc0ac\uc6a9 \uac00\ub2a5<\/strong><\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Duration d1 = Duration.between(time1, time2);    \/\/ LocalTime\nDuration d2 = Duration.between(dateTime1, dateTime2);  \/\/ LocalDateTime\nDuration d3 = Duration.between(instant1, instant2);  \/\/ Instant\n \n \nDuration d4 = Duration.between(date1, date2);  \/\/ LocalDate --> throws Exception\nDuration d5 = Duration.between(time1, instant2) \/\/ throws Exception<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>\ubd84\uba85 Duration\uc758 between \uba54\uc11c\ub4dc\ub294 Temporal \uc778\ud130\ud398\uc774\uc2a4\ub97c \uad6c\ud604\ud55c \uac1d\uccb4\ub97c \ud30c\ub77c\ubbf8\ud130\ub85c \ubc1b\ub294\ub370,<br>\ud30c\ub77c\ubbf8\ud130\ub85c LocalDate \ub97c \ub123\ub294 \uacbd\uc6b0 Exception\uc744 throw\ud55c\ub2e4.<\/li><li>LocalDate\ub294 \uc65c \uc548\ub418\ub294\uac00?<ul><li>Date\uc5d0\ub294 \ucd08 \ub2e8\uc704\uac00 \uc5c6\uae30 \ub54c\ubb38. Duration\uc740 &#8216;\ucd08&#8217; \uc815\ubcf4\ub97c \uac16\uace0 \uc788\ub294 Temporal \uac1d\uccb4\ub9cc \uc0ac\uc6a9 \uac00\ub2a5\ud558\ub2e4\uace0 \ud558\uc600\ub2e4!<\/li><\/ul><\/li><li>\uadf8\ub7fc \ubc18\ucabd\uc9dc\ub9ac \uae30\uac04 \uad00\ub9ac\uc778 \uac83 \uc544\ub2cc\uac00?<ul><li>Period\ub97c \uc4f0\uc790.<\/li><\/ul><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"LocalDateTime-Period\">Period<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Duration\uc758 &#8216;\ub0a0\uc9dc \uc774\uc0c1 \ub2e8\uc704&#8217; \ubc84\uc804<\/li><li>Duration\uc774 \uc2dc,\ubd84,\ucd08 \ub2e8\uc704\uc758 \uae30\uac04\uc744 \ud45c\ud604\ud558\uc600\ub2e4\uba74, Period\ub294 \ub0a0\uc9dc \uc774\uc0c1\uc758 \ub2e8\uc704\uc758 \uae30\uac04\uc744 \ud45c\ud604\ud55c\ub2e4.<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Period p1 = Period.between(LocalDate.of(2020,2,28), LocalDate.of(2020,3,1));  \/\/ 2 (\uc724\ub144\uae4c\uc9c0 \uacc4\uc0b0\ud574 \uc900\ub2e4!)<\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"has-large-font-size wp-block-heading\">\ub0a0\uc9dc\uc870\uc815, \ud30c\uc2f1, \ud3ec\ub9e4\ud305<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>LocalDate\ub4f1\uacfc \uac19\uc740 \uac12\uc744 \uc870\uc815\ud558\uace0\uc790 \ud560 \ub54c(\ub144,\uc6d4,\uc77c \ubcc0\uacbd)<ul><li>withXXXX \uba54\uc18c\ub4dc\ub97c \ud1b5\ud574 LocalDate\ub97c \ubcc0\uacbd\ud560 \uc218 \uc788\ub2e4.<ul><li>\ud558\uc9c0\ub9cc, \uc5ec\ud0dc \ud559\uc2b5\ud55c \uac1d\uccb4\ub294 \ub2e4 immutable\ud558\uae30\uc5d0, \uac1d\uccb4\uc758 \uac12\uc774 \ubcc0\uacbd\ub418\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \uc0c8\ub85c\uc6b4 \uac1d\uccb4\ub97c \uc0dd\uc131\ud558\uc5ec \uac12\uc744 \ub9ac\ud134\ud574 \uc8fc\ub294 \uad6c\uc870\uc774\ubbc0\ub85c \uc0ac\uc6a9\uc2dc\uc5d0 \ucc38\uace0.<\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">LocalDate date1 = LocalDate.of(2019,8,23);  \/\/ 2019-08-23\nLocalDate date2 = date1.withYear(2011);    \/\/ 2011-08-23\nLocalDate date3 = date2.withDayOfMonth(25); \/\/ 2011-08-25\n \n \nLocalDate date4 = date3.with(ChronoField.MONTH_OF_YEAR, 2); \/\/2011-02-25<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc8fc\uc758\uc0ac\ud56d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0c1\uae30 \uc0d8\ud50c\ucf54\ub4dc\ub4e4\uc758 date1,date2,date3\uc744 assign\ud558\ub294 \uc5f0\uc0b0\uc774 \uc8c4\ub2e4 immutable\ud55c \uac1d\uccb4\ub97c \ub0b4\ubc49\ub294 \uad6c\uc870\uc774\ub2e4. \uc0ac\uc6a9\uc2dc \uc720\uc758\ud558\uc790.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<figure class=\"wp-block-gallery columns-2 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"268\" height=\"298\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image2019-12-25_17-37-32.png\" alt=\"\" data-id=\"483\" class=\"wp-image-483\"\/><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><img loading=\"lazy\" decoding=\"async\" width=\"565\" height=\"298\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image2019-12-25_17-37-45-1.png\" alt=\"\" data-id=\"486\" data-full-url=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image2019-12-25_17-37-45-1.png\" data-link=\"https:\/\/scrutineer.co.kr\/wordpress\/?attachment_id=486#main\" class=\"wp-image-486\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image2019-12-25_17-37-45-1.png 565w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image2019-12-25_17-37-45-1-300x158.png 300w\" sizes=\"auto, (max-width: 565px) 100vw, 565px\" \/><\/figure><\/li><\/ul><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c&#8230;&#8230;..<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">LocalDate date = LocalDate.of(2019,8,23);\ndate.withYear(2011);\n \n \nsysout(date);    \/\/ 2019-08-23. 2011-08-23 \uc774 \ucd9c\ub825\ub418\uc9c0 \uc54a\ub294\ub2e4!<\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"has-large-font-size wp-block-heading\">TemporalAdjusters \uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc790<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ud2b9\uc815 \ub0a0\uc9dc\uac00 \uc544\ub2c8\ub77c, &#8216;\uc774\ubc88\ub2ec \ub9c8\uc9c0\ub9c9 \ub0a0&#8217;, \ub0b4\uc9c0\ub294, &#8216;6\uc6d4\uc758 \uccab \uc218\uc694\uc77c \ub0a0&#8217; \uacfc \uac19\uc740, \uacc4\uc0b0\uc2dd\uc73c\ub85c\ub294 \uc870\uae08 \ubcf5\uc7a1\ud558\uac8c \uc0dd\uac01\uc744 \ud574\uc57c \ud558\ub294 \uc0c1\ud669\uc5d0\uc11c \uc720\uc6a9\ud558\uac8c \uc4f0\uc77c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uba54\uc18c\ub4dc \ub9ac\uc2a4\ud2b8\ub4e4\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/time\/temporal\/TemporalAdjusters.html\">https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/time\/temporal\/TemporalAdjusters.html<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"565\" src=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image-1024x565.png\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image-1024x565.png 1024w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image-300x166.png 300w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image-768x424.png 768w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image-1536x848.png 1536w, https:\/\/scrutineer.co.kr\/wordpress\/wp-content\/uploads\/2021\/04\/image.png 1844w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ubc95\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">LocalDate localDate = LocalDate.of(2019,8,23);\nLocalDate getFirstDay = localDate.with(TemporalAdjusters.firstDayOfMonth()); \/\/ 2019-08-01\nLocalDate lastDayOfYear = localDate.with(TemporalAdjusters.lastDayOfYear()); \/\/ 2019-12-31<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"LocalDateTime-\uc0ac\ub0b4\uc2dc\uc2a4\ud15c\uc5d0\uc11c\uc720\uc6a9\ud558\uac8c\uc0ac\uc6a9\ud560\uc218\uc788\ub294\uc601\uc5ed\" style=\"font-size:25px\">(\uad73\uc774 \uac16\ub2e4\ubd99\uc5ec)\uc0ac\ub0b4 \uc2dc\uc2a4\ud15c\uc5d0\uc11c \uc720\uc6a9\ud558\uac8c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub294 \uc601\uc5ed<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>\ubc30\uc1a1\ub3c4\ucc29\uc548\ub0b4 \uc2dc\uc2a4\ud15c<\/li><li>\uae08 or \ud1a0\uc694\uc77c \uc8fc\ubb38\uc2dc, \uc601\uc5c5\uc77c\uc774 \uc544\ub2cc \ud1a0\uc694\uc77c\uc774\ub098 \uc77c\uc694\uc77c\uc758 \uacbd\uc6b0 \ubc30\uc1a1\uc774 \ub3c4\ucc29\ud558\uc9c0 \uc54a\uc74c.<\/li><li>TemporalAdjusters \ub97c \uc774\uc6a9\ud558\uba74, \uc8fc\ubb38\uc744 \ud55c \ub0a0 D-Day\ub97c \uae30\uc900\uc73c\ub85c \uc18c\uc694\ub418\ub294 \uc601\uc5c5\uc77c\ub9cc \uacc4\uc0b0\ud558\uc5ec \ubc30\uc1a1\ub3c4\ucc29\uc2dc\uc810\uc744 \uc54c \uc218\uac00 \uc788\uc74c.<\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class ExpectedDeliveredDay implements TemporalAdjuster {\n \n    private final int nextDayShipDueHour = 17;\n    \/**\n     * 17\uc2dc \uc774\ud6c4\ub294 \uc775\uc77c \ubc1c\uc1a1, 17\uc2dc \uc774\uc804\uc740 \ub2f9\uc77c \ubc1c\uc1a1\n     *\/\n    @Override\n    public Temporal adjustInto(Temporal temporal) {\n \n        int shipPeriod = 1; \/\/\ubc30\uc1a1\uc18c\uc694\uc77c\uc740 \ubc1c\uc1a1\uc77c \uae30\uc900\uc73c\ub85c \ub2e4\uc74c\ub0a0(+1\uc77c)\n \n        \/\/\ubc1c\uc1a1\uc77c \uc815\uc758\n        DayOfWeek shipDayOfWeek = DayOfWeek.of(temporal.get(ChronoField.DAY_OF_WEEK)); \/\/\uae30\ubcf8\uc740 \ub2f9\uc77c \ubc1c\uc1a1\n        if (temporal.get(ChronoField.HOUR_OF_DAY) > nextDayShipDueHour) { \/\/17\uc2dc\ub97c \ub118\uae38 \uc2dc \uc775\uc77c \ubc1c\uc1a1\n            shipDayOfWeek = shipDayOfWeek.plus(1);\n        }\n        \/\/\ubc30\uc1a1\uc77c\uc774 \ud1a0 -> \uc774\ud2c0\uc774 \ub354\ud574\uc838 \uc6d4\uc694\uc77c \ubc1c\uc1a1\n        \/\/\ubc30\uc1a1\uc77c\uc774 \uc77c -> \ud558\ub8e8\uac00 \ub354\ud574\uc838 \uc6d4\uc694\uc77c \ubc1c\uc1a1\n        if (shipDayOfWeek == DayOfWeek.SATURDAY || shipDayOfWeek == DayOfWeek.SUNDAY) {\n            shipDayOfWeek = DayOfWeek.MONDAY;\n        }\n \n        Temporal shipTemporalDay = temporal.with(TemporalAdjusters.nextOrSame(shipDayOfWeek));\n        return shipTemporalDay.plus(shipPeriod, ChronoUnit.DAYS);\n    }\n}<\/pre>\n\n\n\n<hr class=\"wp-block-separator is-style-wide\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">DateTimeFormatter\uc5d0 \ub300\ud574 \uc54c\uc544\ubcf4\uc790<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0Temporal\uc744 \uc0c1\uc18d\ubc1b\uc544 \uc0ac\uc6a9\ud558\ub294 LocalDateTime\ub958\uc758 \ub0a0\uc9dc \ud45c\uc2dc\ub97c \ud2b9\uc815 \ud3ec\uba54\ud305\uc5d0 \uc758\uac70, \uc774\uc058\uac8c \ud3ec\uba54\ud305 \ud574 \uc8fc\ub294 \ud074\ub798\uc2a4<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\ubc95<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DateTimeFormatter formatter = DateTimeFormatter.ofPattern(\"yyyyMMdd\");\nLocalDate dt = LocalDate.of(2019,8,23);\nString result = dt.format(formatter); \/\/ 20190823  LocaalDate to String\nLocalDate.parse(result, formatter); \/\/ String to LocalDate<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc57d\uac04 \uc61b\ub0a0 \ub0c4\uc0c8\uac00 \ud081\ud081\ud081 \ub098\uba74 \uc694\ub807\uac8c builder\ud328\ud134\uc73c\ub85c \uc870\uae08 \uc138\ub828\ub418\uac8c\ub3c4 \ub9cc\ub4e4 \uc218 \uc788\uc74c.\u3147\u3147<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">DateTimeFormatter myFormatter = new DateTimeFormatterBuilder()\n        .appendText(ChronoField.YEAR)\n        .appendLiteral(\"  \")\n        .appendText(ChronoField.MONTH_OF_YEAR)\n        .appendLiteral(\". \")\n        .appendText(ChronoField.DAY_OF_MONTH)\n        .parseCaseInsensitive()\n        .toFormatter()\n \n \nLocalDate dt = LocalDate.of(2019,8,23);\n \n \ndt.format(myFormatter);       \/\/ 2019 8\uc6d4. 23<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LocalDate, LocalTime, LocalDateTime \uc54c\uc544\ubcf4\uc790 LocalDate &amp; LocalTime &amp; LocalDateTime LocalDate (feat. java8 doc) \uc0ac\uc2e4\uc0c1 LocalDate \uc640 LocalTime\uc740 \ub300\ub3d9\uc18c\uc774\ud55c \uc810\uc774 \ub9ce\uae30\uc5d0, LocalTime\uacfc LocalDateTime\uc740 \uc0dd\ub7b5\ud55c\ub2e4.(Java Doc\ub3c4 \ud2b9\ubcc4\ud788 \ucc28\uc774\uc810\uc5d0 \ub300\ud574 \uae30\uc220\ud55c \uc0ac\ud56d\uc774 \uc5c6\uc74c&#8230;.) LocalTime\ub9cc\uc758 \ud2b9\uc9d5 LocalDate\uc758 \uc2dc\uac04 \ubc84\uc804\uc774\uace0&#8230;..\u314b \ucd08\uc758 \ub2e8\uc704\uc2dc\uac04\uc774 &#8216;nanosecond&#8217;\uc774\ub2e4. LocalDateTime\ub9cc\uc758 \ud2b9\uc9d5 \ubb50 \uadf8\ub7f0\uac70 \uc5c6\ub2e4. \uadf8\ub0e5 LocalDate + LocalTime\uc778 spec\uc784&#8230;. Immutable\ud55c \uac1d\uccb4\uc774\uba70, \ubcc4\ub3c4\uc758 &#8216;\uc2dc\uac04&#8217; \uc815\ubcf4\ub294 \uc800\uc7a5 &amp; &#8230; <a title=\"\ubaa8\ub358 \uc790\ubc14 \uc778 \uc561\uc158 12\uc7a5\" class=\"read-more\" href=\"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/2021\/04\/08\/%eb%aa%a8%eb%8d%98-%ec%9e%90%eb%b0%94-%ec%9d%b8-%ec%95%a1%ec%85%98-12%ec%9e%a5\/\" aria-label=\"Read more about \ubaa8\ub358 \uc790\ubc14 \uc778 \uc561\uc158 12\uc7a5\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-481","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=481"}],"version-history":[{"count":5,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/481\/revisions"}],"predecessor-version":[{"id":492,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/481\/revisions\/492"}],"wp:attachment":[{"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scrutineer.co.kr\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}