/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠB ak um on . Ġhttps :// github . com / B ak um on Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġme . bak um on . money keeper . ut ill Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġme . bak um on . money keeper . App Ċ import Ġme . bak um on . money keeper . R Ċ import Ġjava . text . DateFormat Ċ import Ġjava . text . ParseException Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ æĹ¶éĹ´ å·¥åħ· ç±» Ċ Ġ* Ċ Ġ* Ġ@ author ĠB ak um on Ġhttps :// bak um on . me Ċ Ġ*/ Ċ object ĠDate Utils Ġ{ ĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġprivate Ġval ĠFORMAT : ĠDate Format Ġ= ĠSimpleDateFormat (" yyyy - MM ") ĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġprivate Ġval ĠALL _ FORMAT : ĠDate Format Ġ= ĠSimpleDateFormat (" yyyy - MM - dd - HH - mm - ss ") ĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġprivate Ġval ĠMON TH _ DAY _ FORMAT : ĠDate Format Ġ= ĠSimpleDateFormat (" MM - dd ") ĊĠĠĠ Ġ@ Suppress Lint (" SimpleDateFormat ") ĊĠĠĠ Ġprivate Ġval ĠYEAR _ MONTH _ DAY _ FORMAT : ĠDate Format Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»Ĭå¤© ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Today Date (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿ĻéĩĮ çī¹ åĪ« ç»Ń ä¸Ģ ç§Ĵ ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ month Ġ 2 0 1 8 - 0 7 ĊĠĠĠĠ Ġ* Ġ@ return Ġ 6 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmonth 2 Index ( month : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . time Ġ= Ġstring 2 Date ( month , ĠFORMAT ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . get ( Calendar . MONTH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį å¹´ ä»½ æľĪ ä»½ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Year Month (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġreturn Ġdate 2 String ( calendar . time , ĠFORMAT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį å¹´ ä»½ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Year (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . get ( Calendar . YEAR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä¿®æŃ£ åĲİçļĦ å½ĵåīį æľĪ ä»½ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Month (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . get ( Calendar . MONTH ) Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį æľĪ ä»½ å¼Ģå§ĭ æĹ¶ åĪ» çļĦ ĠDate ĊĠĠĠĠ Ġ* Ġæ¯ Ķ å¦Ĥ å½ĵåīį æĺ¯ Ġ 2 0 1 8 å¹´ 4 æľĪ ĊĠĠĠĠ Ġ* Ġè¿ĶåĽŀ çļĦ ĠDate Ġæĺ¯ Ġformat Ġ åĲİ ï¼ļ Ġ 2 0 1 8 - 0 4 - 0 1 T 0 0 : 0 0 : 0 0 . 0 0 0 + 0 8 0 0 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį æľĪ ä»½ å¼Ģå§ĭ çļĦ ĠDate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Month Start (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġreturn Ġget Month Start ( calendar . get ( Calendar . YEAR ), Ġcalendar . get ( Calendar . MONTH ) Ġ+ Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å½ĵåīį æľĪ ä»½ ç»ĵæĿŁ æĹ¶ åĪ» çļĦ ĠDate ĊĠĠĠĠ Ġ* Ġæ¯ Ķ å¦Ĥ å½ĵåīį æĺ¯ Ġ 2 0 1 8 å¹´ 4 æľĪ ĊĠĠĠĠ Ġ* Ġè¿ĶåĽŀ çļĦ ĠDate Ġæĺ¯ Ġformat Ġ åĲİ ï¼ļ Ġ 2 0 1 8 - 0 4 - 3 0 T 2 3 : 5 9 : 5 9 . 9 9 9 + 0 8 0 0 ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį æľĪ ä»½ ç»ĵæĿŁ çļĦ ĠDate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetCurrent Month End (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġreturn Ġget Month End ( calendar . get ( Calendar . YEAR ), Ġcalendar . get ( Calendar . MONTH ) Ġ+ Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® å¹´ æľĪ æĹ¥ åĪĽå»º ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear ĠĠĠĠĠĠĠ Ġå¹´ ĊĠĠĠĠ Ġ* Ġ@ param Ġmonth OfYear Ġ æľĪ ĊĠĠĠĠ Ġ* Ġ@ param Ġday OfMonth Ġ Ġ æĹ¥ ĊĠĠĠĠ Ġ* Ġ@ return ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Date ( year : ĠInt , Ġmonth OfYear : ĠInt , Ġday OfMonth : ĠInt ): ĠDate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ è¿ĻéĩĮ çī¹ åĪ« ç»Ń ä¸Ģ ç§Ĵ ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġyear . toString () Ġ+ Ġ"-" Ġ+ Ġmonth OfYear Ġ+ Ġ"-" Ġ+ Ġday OfMonth Ġ+ Ġ"- 0 0 - 0 0 - 0 1 " ĊĠĠĠĠĠĠĠ Ġreturn Ġstring 2 Date ( time , ĠALL _ FORMAT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĹ¶éĹ´ åŃĹç¬¦ä¸² è½¬ åĮĸ ä¸º ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtime ĠĠ Ġ æĹ¶éĹ´ åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ* Ġ@ param Ġformat ĠDate Format Ġ æł¼å¼ı åĮĸ ç±» ĊĠĠĠĠ Ġ* Ġ@ return ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġstring 2 Date ( time : ĠString , Ġformat : ĠDate Format ): ĠDate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat . parse ( time ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDate Ġå¯¹è±¡ è½¬ åĮĸ ä¸º Ġ æĹ¶éĹ´ åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdate ĠĠ ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ param Ġformat ĠDate Format Ġ æł¼å¼ı åĮĸ ç±» ĊĠĠĠĠ Ġ* Ġ@ return Ġ æĹ¶éĹ´ åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdate 2 String ( date : ĠDate , Ġformat : ĠDate Format ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġformat . format ( date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDate Ġå¯¹è±¡ è½¬ åĮĸ ä¸º xx æľĪ xx æĹ¥ æł¼å¼ı åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdate ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġxx æľĪ xx æĹ¥ Ġ åŃĹç¬¦ä¸² ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdate 2 Month Day ( date : ĠDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdate 2 String ( date , ĠMON TH _ DAY _ FORMAT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ ä¸¤ä¸ª ĠDate Ġæĺ¯åĲ¦ æĺ¯ åĲĮ ä¸Ģ å¤© ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġdate 1 ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ param Ġdate 2 ĠDate Ġå¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue : åĲĮ ä¸Ģ å¤© ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Same Day ( date 1 : ĠDate , Ġdate 2 : ĠDate ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar 1 Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar 1 . time Ġ= Ġdate 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġcalendar 2 Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar 2 . time Ġ= Ġdate 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġyear 1 Ġ= Ġcalendar 1 . get ( Calendar . YEAR ) ĊĠĠĠĠĠĠĠ Ġval Ġyear 2 Ġ= Ġcalendar 2 . get ( Calendar . YEAR ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmonth 1 Ġ= Ġcalendar 1 . get ( Calendar . MONTH ) ĊĠĠĠĠĠĠĠ Ġval Ġmonth 2 Ġ= Ġcalendar 2 . get ( Calendar . MONTH ) ĊĊĠĠĠĠĠĠĠ Ġval Ġday 1 Ġ= Ġcalendar 1 . get ( Calendar . DAY _ OF _ MONTH ) ĊĠĠĠĠĠĠĠ Ġval Ġday 2 Ġ= Ġcalendar 2 . get ( Calendar . DAY _ OF _ MONTH ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġyear 1 Ġ== Ġyear 2 Ġ&& Ġmonth 1 Ġ== Ġmonth 2 Ġ&& Ġday 1 Ġ== Ġday 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æł¼å¼ı åĮĸ å¹´ æľĪ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear Ġ Ġå¹´ ä»½ ĊĠĠĠĠ Ġ* Ġ@ param Ġmonth Ġ æľĪ ä»½ ï¼Ī åŃĹ éĿ¢ ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Year Month Format String ( year : ĠInt , Ġmonth : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . clear () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġmonth Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdate 2 String ( calendar . time , ĠFORMAT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æŁĲ æľĪ æľī å¤ļå°ĳ å¤© ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear Ġ Ġå¹´ ä»½ ĊĠĠĠĠ Ġ* Ġ@ param Ġmonth Ġ æľĪ ä»½ ĊĠĠĠĠ Ġ* Ġ@ return Ġ è¯¥ æľĪ çļĦ å¤© æķ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Day Count ( year : ĠInt , Ġmonth : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . clear () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġmonth Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . get Actual Maximum ( Calendar . DAY _ OF _ MONTH ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æŁĲ æľĪ ä»½ å¼Ģå§ĭ æĹ¶ åĪ» çļĦ ĠDate ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear Ġ Ġå¹´ ä»½ ĊĠĠĠĠ Ġ* Ġ@ param Ġmonth Ġ æľĪ ä»½ ĊĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį æľĪ ä»½ å¼Ģå§ĭ çļĦ ĠDate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Month Start ( year : ĠInt , Ġmonth : ĠInt ): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġc . clear () ĊĠĠĠĠĠĠĠ Ġc . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġc . set ( Calendar . MONTH , Ġmonth Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġmonth Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . DAY _ OF _ MONTH , Ġc . get Actual Minimum ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġc . get Actual Minimum ( Calendar . HOUR _ OF _ DAY )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġc . get Actual Minimum ( Calendar . MINUTE )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġc . get Actual Minimum ( Calendar . SECOND )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġc . get Actual Minimum ( Calendar . MILLI SECOND )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æŁĲ æľĪ ä»½ ç»ĵæĿŁ æĹ¶ åĪ» çļĦ ĠDate ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear Ġ Ġå¹´ ä»½ ĊĠĠĠĠ Ġ* Ġ@ param Ġmonth Ġ æľĪ ä»½ ĊĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį æľĪ ä»½ ç»ĵæĿŁ çļĦ ĠDate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Month End ( year : ĠInt , Ġmonth : ĠInt ): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġ// Ġ è§£åĨ³ Ġget Actual Maximum Ġ æĢ» æĺ¯ å½ĵåīį æľĪ ä»½ çļĦ æľĢå¤§ å¤© æķ° ĊĠĠĠĠĠĠĠ Ġc . clear () ĊĠĠĠĠĠĠĠ Ġc . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġc . set ( Calendar . MONTH , Ġmonth Ġ- Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġmonth Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . DAY _ OF _ MONTH , Ġc . get Actual Maximum ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġc . get Actual Maximum ( Calendar . HOUR _ OF _ DAY )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġc . get Actual Maximum ( Calendar . MINUTE )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġc . get Actual Maximum ( Calendar . SECOND )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġc . get Actual Maximum ( Calendar . MILLI SECOND )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æŁĲ å¹´ å¼Ģå§ĭ æĹ¶ åĪ» çļĦ ĠDate ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear Ġ Ġå¹´ ä»½ ĊĠĠĠĠ Ġ* Ġ@ return Ġå½ĵåīį å¹´ å¼Ģå§ĭ çļĦ ĠDate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Year Start ( year : ĠInt ): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġc . clear () ĊĠĠĠĠĠĠĠ Ġc . set ( Calendar . YEAR , Ġyear ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġc . get Actual Minimum ( Calendar . MONTH )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . DAY _ OF _ MONTH , Ġc . get Actual Minimum ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġc . get Actual Minimum ( Calendar . HOUR _ OF _ DAY )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġc . get Actual Minimum ( Calendar . MINUTE )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġc . get Actual Minimum ( Calendar . SECOND )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġc . get Actual Minimum ( Calendar . MILLI SECOND )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æŁĲ å¹´ ç»ĵæĿŁ æĹ¶ åĪ» çļĦ ĠDate ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġyear Ġ Ġå¹´ ä»½ ĊĠĠĠĠ Ġ* Ġ@ return Ġæ Ł Ĳ å¹´ ç»ĵæĿŁ çļĦ ĠDate ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Year End ( year : ĠInt ): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġc . clear () ĊĠĠĠĠĠĠĠ Ġc . set ( Calendar . YEAR , Ġyear ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . YEAR , Ġyear ) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MONTH , Ġc . get Actual Maximum ( Calendar . MONTH )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . DAY _ OF _ MONTH , Ġc . get Actual Maximum ( Calendar . DAY _ OF _ MONTH )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġc . get Actual Maximum ( Calendar . HOUR _ OF _ DAY )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġc . get Actual Maximum ( Calendar . MINUTE )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġc . get Actual Maximum ( Calendar . SECOND )) ĊĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġc . get Actual Maximum ( Calendar . MILLI SECOND )) ĊĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Today Start (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDate ( today Start Millis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Today End (): ĠDate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDate ( today End Millis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»Ĭå¤© å¼Ģå§ĭ æĹ¶éĹ´ æĪ ³ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ ä»Ĭå¤© å¼Ģå§ĭ æĹ¶éĹ´ æĪ ³ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtoday Start Millis : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time In Millis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»Ĭå¤© ç»ĵæĿŁ æĹ¶éĹ´ æĪ ³ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ ä»Ĭå¤© ç»ĵæĿŁ æĹ¶éĹ´ æĪ ³ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtoday End Millis : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Hour Ġ= Ġcalendar . get Actual Maximum ( Calendar . HOUR _ OF _ DAY ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Minute Ġ= Ġcalendar . get Actual Maximum ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Second Ġ= Ġcalendar . get Actual Maximum ( Calendar . SECOND ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Millisecond Ġ= Ġcalendar . get Actual Maximum ( Calendar . MILLI SECOND ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . HOUR _ OF _ DAY , Ġmax Hour ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MINUTE , Ġmax Minute ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . SECOND , Ġmax Second ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . set ( Calendar . MILLI SECOND , Ġmax Millisecond ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcalendar . time In Millis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åŃĹ éĿ¢ æĹ¶éĹ´ ĊĠĠĠĠ Ġ* Ġ å¦Ĥ ï¼ļ ĊĠĠĠĠ Ġ* Ġ 1 . ä»Ĭå¤© ĊĠĠĠĠ Ġ* Ġ 2 . æĺ ¨ å¤© ĊĠĠĠĠ Ġ* Ġ 3 . å½ĵ å¹´ åĨħ ï¼Į 4 æľĪ 2 0 æĹ¥ ĊĠĠĠĠ Ġ* Ġ 4 . è¶ħè¿ĩ å½ĵ å¹´ ï¼Į 2 0 1 7 å¹´ 3 æľĪ 3 0 æĹ¥ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ åŃĹ éĿ¢ æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Word Time ( date : ĠDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcal . time Ġ= Ġdate ĊĠĠĠĠĠĠĠ Ġval Ġdate Millis Ġ= Ġcal . time In Millis ĊĊĠĠĠĠĠĠĠ Ġval Ġtoday Start Millis Ġ= Ġtoday Start Millis ĊĠĠĠĠĠĠĠ Ġval Ġtoday End Millis Ġ= Ġtoday End Millis ĊĊĠĠĠĠĠĠĠ Ġval Ġone Day Millis Ġ= Ġtoday End Millis Ġ- Ġtoday Start Millis Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( date Millis Ġin Ġtoday Start Millis .. today End Millis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . instance . resources . getString ( R . string . text _ today ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( date Millis Ġ>= Ġtoday Start Millis Ġ- Ġone Day Millis Ġ&& Ġdate Millis Ġ<= Ġtoday End Millis Ġ- Ġone Day Millis ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApp . instance . resources . getString ( R . string . text _ y esterday ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( cal . get ( Calendar . YEAR ) Ġ== ĠCalendar . getInstance (). get ( Calendar . YEAR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate 2 String ( date , ĠMON TH _ DAY _ FORMAT ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate 2 String ( date , ĠYEAR _ MONTH _ DAY _ FORMAT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ