package com.levelup.java.date;
import static org.junit.Assert.assertEquals;
import java.time.LocalDate;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQuery;
import java.util.Calendar;
import org.junit.Test;
/**
* This example will demonstrate getting current
* quarter in Java.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/current-quarter/'>Current quarter</a>
*
*/
public class CurrentQuarter {
@Test
public void current_quarter_with_java() {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, 3);
int month = cal.get(Calendar.MONTH);
int quarter = 0;
// 3, 6, 9, 12
if (month <= 3) {
quarter = 1;
} else if (month <= 6) {
quarter = 2;
} else if (month <= 9) {
quarter = 3;
} else {
quarter = 4;
}
assertEquals(1, quarter);
}
@Test
public void current_quarter_with_java8() {
LocalDate date = LocalDate.of(2014, 02, 01);
Integer quarter = date.query(new Quarter());
assertEquals(new Integer(1), quarter);
}
/**
* Methods returns the proper quarter based on the date passed
*/
class Quarter implements TemporalQuery<Integer> {
@Override
public Integer queryFrom(TemporalAccessor date) {
int month = date.get(ChronoField.MONTH_OF_YEAR);
if (month <= 3) {
return new Integer(1);
} else if (month <= 6) {
return new Integer(2);
} else if (month <= 9) {
return new Integer(3);
} else {
return new Integer(4);
}
}
}
}