package Ġio . ple o . ant ae us . schedul ers . helper ĊĊ Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . LocalDateTime . now Ċ import Ġjava . time . Duration ĊĊĊ Ċ class ĠUtils Scheduler { ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturn Ġtrue Ġif Ġit Ġis Ġthe Ġfirst Ġday Ġof Ġthe Ġcurrent Ġmonth ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġis First Of The Month (): Boolean { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġnow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnow . day OfMonth Ġ== Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHow Ġmany Ġmilliseconds Ġbetween Ġnow Ġand Ġthe Ġfirst Ġday Ġof Ġnext Ġmonth Ġat Ġ 0 0 : 0 0 Ġ( Using Ġthe Ġlocal Ġtime Ġzone Ġof Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġserver Ġrunning Ġin Ġthis Ġcontext ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġuntil First Day Next Month Milliseconds (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġnow () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Day Next Month Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( now . month Value Ġ== Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . of ( now . year Ġ+ Ġ 1 Ġ, Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDateTime . of ( now . year , Ġnow . month Ġ+ Ġ 1 , Ġ 1 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDuration . between ( now (), Ġfirst Day Next Month ). to Millis () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠM illiseconds Ġin Ġ 2 4 Ġhour ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġmilliseconds One Day (): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 2 4 * 6 0 * 6 0 * 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊ Ċ }