package Ġi ii _ con ventions Ċ Ċ /** Ċ Ġ* ĠMy Date Ġ ç±» ï¼Į æ¼Ķ ç¤º äºĨ ĠKotlin Ġä¸ŃçļĦ æĵįä½ľ ç¬¦ éĩį è½½ ï¼Į ä¸į ä½Ĩ åı¯ä»¥ éĩį è½½ Ġ>< Ġ çŃī ï¼Į è¿ĺ åı¯ä»¥ éĩį è½½ Ġ+ Ġ- Ġ.. Ġ çŃī æĵįä½ľ ç¬¦ Ċ Ġ* Ġ*/ Ċ Ċ /** Ċ Ġ* Ġ å®ŀçİ° ĠComparable Ġ å°±åı¯ä»¥ ä½¿çĶ¨ Ġ>= < ĠæĿ¥ æ¯Ķè¾ĥ å¤§å°ı äºĨ Ċ Ġ* Ġ*/ Ċ data Ġclass ĠMy Date ( val Ġyear : ĠInt , Ġval Ġmonth : ĠInt , Ġval Ġday OfMonth : ĠInt ) Ġ: ĠComparable < My Date > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠMy Date ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( year Ġ> Ġother . year ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( year Ġ< Ġother . year ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( month Ġ> Ġother . month ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( month Ġ< Ġother . month ) Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( day OfMonth Ġ> Ġother . day OfMonth ) Ġreturn Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( day OfMonth Ġ< Ġother . day OfMonth ) Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ å®ŀçİ° Ġrange To Ġ å°±åı¯ä»¥ è°ĥçĶ¨ Ġ.. Ġæĵ įä½ľ ç¬¦ äºĨ Ċ Ġ* Ġ*/ Ċ operator Ġfun ĠMy Date . range To ( other : ĠMy Date ): ĠDate Range Ġ= ĠDate Range ( this , Ġother ) Ċ Ċ /** Ċ Ġ* Ġ å®ŀçİ° Ġplus Ġ å°±åı¯ä»¥ è°ĥçĶ¨ Ġ+ Ġæĵ įä½ľ ç¬¦ äºĨ Ċ Ġ* Ġ*/ Ċ operator Ġfun ĠMy Date . plus ( interval : ĠTime Interval ): ĠMy Date Ġ{ ĊĠĠĠ Ġreturn Ġadd Time Intervals ( interval , Ġ 1 ) Ċ } Ċ Ċ enum Ġclass ĠTime Interval Ġ{ ĊĠĠĠ ĠDAY , ĊĠĠĠ ĠW EEK , ĊĠĠĠ ĠYEAR Ċ } Ċ Ċ /** Ċ Ġ* Ġ åħģè®¸ ä¹ ĺ æ³ķ çļĦ ĠTime Interval ï¼Į æİ¥æĶ¶ ĠTime Interval Ġ ä¸İ Ġtimes Ċ Ġ* Ġ*/ Ċ class ĠRe peated Time Interval ( val Ġti : ĠTime Interval , Ġval Ġtimes : ĠInt ) Ċ Ċ /** Ċ Ġ* Ġ å®ŀçİ° Ġtimes Ġ å°±åı¯ä»¥ è°ĥçĶ¨ Ġ* Ġæĵ įä½ľ ç¬¦ äºĨ Ċ Ġ* Ġ*/ Ċ operator Ġfun ĠTime Interval . times ( times : ĠInt ): ĠRe peated Time Interval Ġ{ ĊĠĠĠ Ġreturn ĠRe peated Time Interval ( this , Ġtimes ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ éĩį è½½ Ġplus Ġæĸ¹æ³ķ ï¼Į ä½¿ å¾Ĺ ĠRe peated Time Interval ĠæĶ¯æĮģ Ġ* ĠçļĦ åĲĮæĹ¶ ä¹Ł æĶ¯æĮģ Ġ+ Ġæĵ įä½ľ Ċ Ġ* Ġ*/ Ċ operator Ġfun ĠMy Date . plus ( interval : ĠRe peated Time Interval ): ĠMy Date Ġ{ ĊĠĠĠ Ġreturn Ġadd Time Intervals ( interval . ti , Ġinterval . times ) Ċ } Ċ Ċ /** Ċ Ġ* Ġ å®ŀçİ° ĠIterator ĠåĴĮ ĠJava Ġä¸Ń ç±»ä¼¼ ï¼Į éľĢè¦ģ å®ŀçİ° Ġhas Next () ĠåĴĮ Ġnext () Ġæĸ¹æ³ķ Ċ Ġ* Ġ*/ Ċ class ĠDate Iterator ( start : ĠMy Date , Ġprivate Ġval Ġend Inclusive : ĠMy Date ) Ġ: ĠIterator < My Date > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcurrent Ġdate ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcurrent Ġ= Ġstart ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å®ŀçİ° Ġhas Next () Ġæĸ¹æ³ķ åĪ¤æĸŃ æĺ¯åĲ¦ è¿ĺæľī åĲİ ç»Ń çļĦ åħĥç´ł ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Ġ<= Ġend Inclusive ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å®ŀçİ° Ġnext () Ġæĸ¹æ³ķ æĿ¥ ç§»åĬ¨ åĪ° ä¸ĭ ä¸Ģä¸ª ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġnext (): ĠMy Date Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcopy Ġ= Ġcurrent ĊĠĠĠĠĠĠĠ Ġcurrent Ġ= Ġcurrent . next Day () ĊĠĠĠĠĠĠĠ Ġreturn Ġcopy ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ å®ŀçİ° ĠClosed Range Ġ å°±åı¯ä»¥ ä½¿çĶ¨ Ġin Ġæĵ įä½ľ ç¬¦ äºĨ Ċ Ġ* Ġ å®ŀçİ° ĠIterable Ġ å°±åı¯ä»¥ ä½¿çĶ¨ Ġfor Ġloop Ġ äºĨ Ċ Ġ* Ġ*/ Ċ class ĠDate Range ( override Ġval Ġstart : ĠMy Date , Ġoverride Ġval Ġend Inclusive : ĠMy Date ) Ġ: ĠClosed Range < My Date >, ĠIterable < My Date > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < My Date > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDate Iterator ( start , Ġend Inclusive ) ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġcontains ( value : ĠMy Date ): ĠBoolean Ġ{} Ġ// Ġåı¯ä»¥ ä½¿çĶ¨ é»ĺè®¤ å®ŀçİ° Ġvalue Ġ>= Ġstart Ġ&& Ġvalue Ġ<= Ġend Inclusive Ċ } Ċ