## The challenge

Write a function minutesToMidnight(d) that will take a date object as the parameter. Return the number of minutes in the following format:

“x minute(s)”

You will always get a date object with of today with a random timestamp.
You have to round the number of minutes.
Milliseconds don’t matter!`Some examples: 10.00 am => "840 minutes" 23.59 pm => "1 minute"`

## The solution in Java code

Option 1:

 ``````1 2 3 4 5 6 7 8 9 `````` ``````import java.util.Date; public class Minute { public String countMinutes(Date d){ int mins=(24-d.getHours()-1)*60+60-d.getMinutes(); if (d.getHours()==23 && d.getMinutes()==59) return "1 minute"; return (d.getSeconds()!=0)? ""+(mins-1)+" minutes" : ""+mins+" minutes"; } } ``````

Option 2:

 `````` 1 2 3 4 5 6 7 8 9 10 11 `````` ``````import static java.time.ZoneOffset.UTC; import static java.time.temporal.ChronoField.MINUTE_OF_DAY; import java.util.Date; class Minute { static String countMinutes(Date d) { var time = d.toInstant().atZone(UTC); int min = 1440 - time.get(MINUTE_OF_DAY) - Math.min(time.getSecond(), 1); return min + " minute" + (min == 1 ? "" : "s"); } } ``````

Option 3:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 `````` ``````import java.util.Date; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.time.ZoneId; public class Minute { public String countMinutes(Date d){ LocalDateTime today = LocalDateTime.ofInstant(d.toInstant(), ZoneId.systemDefault()); LocalDateTime midnight = today.plusDays(1) .withHour(0) .withMinute(0) .withSecond(0) .withNano(0); long minutesBetween = ChronoUnit.MINUTES.between(today, midnight); return minutesBetween > 1 ? minutesBetween + " minutes" : minutesBetween + " minute"; } } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 `````` ``````import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; import java.util.Date; import java.util.Random; import java.util.Calendar; import java.util.GregorianCalendar; public class MinuteTest { @Test public void exampleTests(){ Minute m = new Minute(); Calendar cal = new GregorianCalendar(); cal.set(Calendar.HOUR_OF_DAY, 12); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); Date d = cal.getTime(); assertEquals("720 minutes", m.countMinutes(d)); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); d = cal.getTime(); assertEquals("1 minute", m.countMinutes(d)); } } ``````