需求:判断一个日期是否为当月月末日期?
import org.apache.commons.lang.StringUtils; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.BooleanWritable; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 判断日期是否是月的最后一天 返回ture false */ public class UDFIsMonthLastDay extends UDF { SimpleDateFormat simDateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date; Calendar calendar = Calendar.getInstance(); int dayMax = 0; BooleanWritable result = new BooleanWritable(); public BooleanWritable evaluate(String dateStr) throws ParseException { if (StringUtils.isBlank(dateStr)) return null; date = simDateFormat.parse(dateStr); calendar.setTime(date); dayMax = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); result.set(false); if (dayMax == calendar.get(Calendar.DAY_OF_MONTH)) result.set(true); else result.set(false); return result; } public static void main(String[] args) throws Exception { UDFIsMonthLastDay o = new UDFIsMonthLastDay(); System.out.println(o.evaluate("2012-02-29")); System.out.println(o.evaluate("2000-02-28"));//false System.out.println(o.evaluate("2017-02-28")); System.out.println(o.evaluate("2017-02-30")); //虚假日期,不会报错,但是为false } } 输出结果显示: true false true false