Slide 1

Slide 1 text

$ZCP[V.PCJMF.FFUVQ TXJGUGPVOEBUJPO $BMFOEBSͷ࣮૷Λ೷͘

Slide 2

Slide 2 text

ΞδΣϯμ w TXJGUGPVOEBUJPOʹ͍ͭͯ w TXJGUGPVOEBUJPO TXJGUGPVOEBUJPOJDVͷؔ܎ਤ w TXJGUGPVOEBUJPOΛ೷͘ • date(bySetting:value:for:) • date(byAdding:value:to:wrappingComponents:)

Slide 3

Slide 3 text

w IPLVSPO w 5XJUUFS (JU)VC ;FOO FUDʜ w ೖࣾ w αΠϘ΢ζ0 ffi DFJ04 ࣗݾ঺հ

Slide 4

Slide 4 text

TXJGUGPVOEBUJPO ֓ཁ w BQQMFTXJGUGPVOEBUJPOϦϙδτϦ w 'PVOEBUJPOͷΦʔϓϯιʔε൛ w طଘͷ'PVOEBUJPOΑΓ΋଎͍ w IUUQTHJUIVCDPNBQQMFTXJGUGPVOEBUJPO w IUUQTXXXTXJGUPSHCMPHGPVOEBUJPOQSFWJFXOPXBWBJMBCMF

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

TXJGUGPVOEBUJPO TXJGUGPVOEBUJPOJDVύοέʔδ w TXJGUGPVOEBUJPO͕ґଘ͢Δ*$6࣮૷ w ཪํతͳଘࡏ w BQQMFPTTEJTUSJCVUJPOT*$6ϦϙδτϦ͔Βࣗಈநग़ w 4XJGU1.Λαϙʔτ w $ ϥΠϒϥϦ w TXJGUGPVOEBUJPO͔Βར༻Ͱ͖ΔΑ͏ʹϒϦοδ༻$࣮૷΋༻ҙ ''*

Slide 7

Slide 7 text

TXJGUGPVOEBUJPO w *OUFSOBUJPOBM$PNQPOFOUTGPS6OJDPEF w 6OJDPEFͱJOΛఏڙ͢ΔϥΠϒϥϦ w ࣌ؒʹؔ͢Δԋࢉ ྐྵͷऔΓѻ͍΍λΠϜκʔϯԋࢉ  w ਺஋ɺ೔࣌ɺ௨՟ͳͲͷϑΥʔϚολʔ w ଞɺ6OJDPEFͷαϙʔτɺςΩετڥքɺਖ਼نදݱͳͲ *$6

Slide 8

Slide 8 text

TXJGUGPVOEBUJPO w *$6͕࣋ͭػೳΛ૊Έ߹Θͤͯಠࣗͷ"1*Λఏڙ w *$6Ͱͷԋࢉ݁ՌͷՃ޻ w *$6Ͱ͸࣮૷͞Ε͍ͯͳ͍೔෇ԋࢉͷ࣮૷ w Calendar → _Calendar → ICU4C TXJGUGPVOEBUJPOJDVͱͷؔ܎ੑ Calendarͷ৔߹

Slide 9

Slide 9 text

TXJGUGPVOEBUJPO w NSCalendarΫϥεͷ୯ͳΔϥούʔ w ΄ͱΜͲͷ৔߹ɺNSCalendarͷಉ໊ͷϝιουʹॲཧΛҠৡ͍ͯ͠Δ͚ͩ w $PSF'PVOEBUJPO΋όϯυϧ͞Ε͓ͯΓɺCFCalendarͰ*$6Λݺͼग़͢ w TXJGUGPVOEBUJPO JDV ొ৔Ҏલ͔Βৄࡉͳ࣮૷ΛݟΔ͜ͱ͸Ͱ͖͍ͯͨ w TXJGUGPVOEBUJPOͱൺֱͯ͠Ͳͷఔ౓ͷৄࡉ͔͞͸ະ֬ೝ w Calendar → NSCalendar (CFCalendar) → ICU4C طଘͷTXJGUDPSFMJCTGPVOEBUJPO Calendarͷ৔߹

Slide 10

Slide 10 text

struct Calendar class _Calendar class Calendar class GregorianCalendar class JapaneseCalendar ɾ ɾ ɾ class EraRules (ucal.cpp) TXJGUGPVOEBUJPO TXJGUGPVOEBUJPOJDV

Slide 11

Slide 11 text

struct Calendar class _Calendar TXJGUGPVOEBUJPO

Slide 12

Slide 12 text

TXJGUGPVOEBUJPO w ७ਮͳ4XJGUͷߏ଄ମ 7BMVFTFNBOUJDT  w ΫϥΠΞϯτ͕௚઀ѻ͏͜ͱʹͳΔ෦෼ w _Calendar͔Βͷ໭ͬͯ͘Δ݁ՌͷՃ޻ w _Calendar΍*$6Ͱ͸࣮૷͞Ε͍ͯͳ͍೔෇ԋࢉͷ࣮૷ public struct Calendar

Slide 13

Slide 13 text

TXJGUGPVOEBUJPO w ओʹ*$6΁ͷϒϦοδ w VDBMDQQʹఆٛ͞Εͨؔ਺ ''* ͷݺͼग़͠ w ݺͼग़͠தͷϩοΫ w *$6Ͱ͸࣮૷͞Ε͍ͯͳ͍೔෇ԋࢉͷ࣮૷ internal class _Calendar

Slide 14

Slide 14 text

struct Calendar class _Calendar TXJGUGPVOEBUJPO

Slide 15

Slide 15 text

struct Calendar class _Calendar class Calendar class GregorianCalendar class JapaneseCalendar ɾ ɾ ɾ class EraRules (ucal.cpp) TXJGUGPVOEBUJPO TXJGUGPVOEBUJPOJDV

Slide 16

Slide 16 text

class Calendar class GregorianCalendar class JapaneseCalendar ɾ ɾ ɾ class EraRules (ucal.cpp) TXJGUGPVOEBUJPOJDV

Slide 17

Slide 17 text

TXJGUGPVOEBUJPOJDV w 4XJGU͔Β*$6 $ ࣮૷ Λݺͼग़ͨ͢Ίͷ''* 'PSFJHO'VODUJPO*OUFSGBDF  w 4XJGUͰ$ Λ௚઀ݺ΂ΔΑ͏ʹͳͬͨͷͰ͸ʁ w *$6ͷCalendarΫϥεͷϙΠϯλΛఏڙ w ઌͷ_CalendarΫϥε͔Βؒ઀తʹ*$6ͷCalendarΫϥεʹΞΫηεՄೳʹ ucal.cpp

Slide 18

Slide 18 text

TXJGUGPVOEBUJPOJDV w *$6 w ྐྵಠࣗͷࣄ৘Λߟྀͨ͠೿ੜΫϥε w GregorianCalendar ϢϦ΢εྐྵ άϨΰϦΦྐྵ  w JapaneseCalendar ࿨ྐྵ  w ਖ਼֬ʹ͸GregorianCalendarͷαϒΫϥε w FSBͱZFBSͷಈ͖͕ಛघͳͨΊɺ͞ΒʹEraRulesΫϥε͕༻ҙ͞Ε͍ͯΔ class Calendar

Slide 19

Slide 19 text

class Calendar class GregorianCalendar class JapaneseCalendar ɾ ɾ ɾ class EraRules (ucal.cpp) TXJGUGPVOEBUJPOJDV

Slide 20

Slide 20 text

struct Calendar class _Calendar class Calendar class GregorianCalendar class JapaneseCalendar ɾ ɾ ɾ class EraRules (ucal.cpp) TXJGUGPVOEBUJPO TXJGUGPVOEBUJPOJDV

Slide 21

Slide 21 text

• date(bySetting:value:for:) -> Date? • date(byAdding:value:to:wrappingComponents:) -> Date? w υΩϡϝϯςʔγϣϯ͔Β͸ɺOJM͕ฦ͞ΕΔ৚͕͍݅·͍ͪΘ͔Βͳ͍ w NSCalendarͰ͸ॻ͔Ε͍ͯΔ಺༰͕ඍົʹҧ͏ w ͚Ͳ΍ͬͺΓΘ͔Βͳ͍ w ͱΓ͋͑ͣɺvalueҾ਺ʹInt.maxΛ౉͕ͪ͠ w ༗ޮൣғΛ୳ΔͷఘΊ͕ͪ TXJGUGPVOEBUJPOΛ೷͘

Slide 22

Slide 22 text

දʹ·ͱΊ·ͨ͠

Slide 23

Slide 23 text

஫ҙשى IUUQTHJUIVCDPNBQQMFTXJGUGPVOEBUJPOUSFF CCBGEDFCBEFDEFD ͜ͷ࣌఺ ˢ ͷιʔείʔυΛࢀর͍ͯ͠·͢ɻ TXJGUGPVOEBUJPOͱTXJGUGPVOEBUJPOJDVͷίʔυ΍࣮ࡍʹಈ͔ͨ݁͠Ռ͔Βಡ Έऔͬͨ݁ՌͰ͢ɻਖ਼֬ʹಡΈऔΕͨอূ͸Ͱ͖͔Ͷ·͢ɻ ֬ೝͨ͠ྐྵ͸ɺάϨΰϦΦྐྵͱ࿨ྐྵͷΈͰ͢ɻͦͷଞͷྐྵͰ͸ɺҟͳΔ݁ՌʹͳΔ ͔΋͠Ε·ͤΜɻ 04ʹόϯυϧ͞Ε͍ͯΔ'PVOEBUJPO͕ɺಉ༷ͷಈ͖Λ͢Δͷ͔͸͖ͪΜͱ֬ೝ͠ ͍ͯ·ͤΜɻ

Slide 24

Slide 24 text

date(bySetting:value:for:) componentx value ͷ༗ޮൣғ component era year value (Gregorian) d d value (Japanese) d ্ݶ͸೥߸͕ มΘΔ͝ͱʹ૿Ճ dάϨΰϦΦྐྵͷ্ݶ͔Β dateͷ೥߸͕։࢝ͨ͠೥Λݮࢉ ྫ ݱࡏ  ྩ࿨։࢝ͷ೥  Լݶͷิ଍ Լݶ͸ɺdateҾ਺ͷ஋ΑΓ΋ԼճΔ஋Λࢦఆ͢Δͱnil͕ฦΔ  ྫ ݱࡏ ྐྵʹ.gregorianΛɺdateʹ.nowΛࢦఆɹɹɹɹྐྵʹ.japaneseΛɺdateʹ.nowΛࢦఆ FSB ੢ྐྵ ˠ⭕ɺ لݩલ ˠ❌ɹɹɹɹɹɹɹɹFSB ྩ࿨ ˠ⭕ɺ ฏ੒ ˠ❌ ZFBSˠ⭕ɺҎԼˠ❌ɹɹɹɹɹɹɹɹZFBSˠ⭕ɺҎԼˠ❌

Slide 25

Slide 25 text

date(bySetting:value:for:) componentx value ͷ༗ޮൣғ component month day hour minute, second weekday quarter weekOfMonth weekOfYear nanosecond value (ڞ௨) d d d d d d ͸ɺdateΛ ͦͷ··ฦ͢ d d d 

Slide 26

Slide 26 text

date(bySetting:value:for:) componentx value ͷ༗ޮൣғ component calendar timeZone isLeapMonth value ৗʹnil͕ฦ͞ΕΔ ৗʹnil͕ฦ͞ΕΔ ৗʹnil͕ฦ͞ΕΔ

Slide 27

Slide 27 text

date(bySetting:value:for:) componentx value ͷ༗ޮൣғ w weekdayOrdinalͱyearForWeekOfYear͸ௐ΂͖Εͳ͔ͬͨ w weekdayOrdinal ͸ɺ༗ޮൣғ಺ͱࢥΘΕΔ஋Ͱ΋Ϋϥογϡͨ͠Γॲཧ͕ࢭ·ͬͨΓ͢Δ

Slide 28

Slide 28 text

w ϢϦ΢ε೔͔ΒTXJGUGPVOEBUJPO͕نఆ͢Δ࣌఺·Ͱ w طଘ࣮૷ͱͷޓ׵ੑͷͨΊʁ w  d  Date(timeIntervalSinceReferenceDate: -211845067200.0)… Date(timeIntervalSinceReferenceDate: 15927175497600.0) w date͕͜ͷൣғΛ௒͑Δͱnil͕ฦ͞ΕΔ w date(byAdding:value:to:wrappingComponents:)ͱ͸ҟͳΔ date date(bySetting:value:for:)

Slide 29

Slide 29 text

date(byAdding:value:to:wrappingComponents:) componentx value ͷ༗ޮൣғ component era, year, month, day, hour, minute, second, weekday, weekdayOrdinal, quarter, weekOfMonth, weekOfYear, yearForWeekOfYear, nanosecond calendar timeZone isLeapMonth value IntͷൣғͰ ੍ݶͳ͠ ৗʹnil͕ฦ͞ΕΔৗʹnil͕ฦ͞ΕΔৗʹnil͕ฦ͞ΕΔ

Slide 30

Slide 30 text

date(byAdding:value:to:wrappingComponents:) w ϢϦ΢ε೔͔ΒTXJGUGPVOEBUJPO͕نఆ͢Δ࣌఺·Ͱ w  d  Date(timeIntervalSinceReferenceDate: -211845067200.0)… Date(timeIntervalSinceReferenceDate: 15927175497600.0) w date͸ɺԋࢉલʹ͜ͷൣғʹऩ·ΔΑ͏ʹmax(min())͕औΒΕΔ w ԋࢉͷ݁Ռɺ͜ͷൣғ֎ʹͳͬͯ΋ͦͷ··ฦ͢ w *$6ଆͰ͸΋ͬͱେ͖ͳൣғ لݩલສ೥ ~ ੢ྐྵສ೥ ͕ѻ͑Δ ࠷ॳͷાஔΛߦ͏ͷ͸ɺTXJGUGPVOEBUJPOͷ੍໿ʁ date

Slide 31

Slide 31 text

date(byAdding:value:to:wrappingComponents:) w ݁ՌʹӨڹ͠ͳ͍ wrappingComponents

Slide 32

Slide 32 text

• date(bySetting:value:for:) -> Date? • date(byAdding:value:to:wrappingComponents:) -> Date? w υΩϡϝϯςʔγϣϯ͔Β͸ɺOJM͕ฦ͞ΕΔ৚͕͍݅·͍ͪΘ͔Βͳ͍ w NSCalendarͰ͸ॻ͔Ε͍ͯΔ಺༰͕ඍົʹҧ͏ w ͚Ͳ΍ͬͺΓΘ͔Βͳ͍ wͱΓ͋͑ͣɺvalueҾ਺ʹInt.maxΛ౉͕ͪ͠ w ༗ޮൣғΛ୳ΔͷఘΊ͕ͪ TXJGUGPVOEBUJPOΛ೷͘

Slide 33

Slide 33 text

value ʹ .max Λ౉͢ͱɺ date(byAdding:…)ͷ৔߹͸ɺdate ͷ஋͕ͦͷ··ฦ͞ΕΔ date(bySetting:…)ͷ৔߹͸ɺnil ͕ฦ͞ΕΔ