需求:输入日期,返回当前日期的月末日期
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; /** * 输入日期,返回当月的月末的日期 */ public class UDFLastDay extends UDF { public static String evaluate(String Date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); Calendar cal = Calendar.getInstance(); Date date = null; try { date = sdf.parse(Date.replace("-", "")); } catch (ParseException e) { e.printStackTrace(); } cal.setTime(date); cal.set(5, cal.getActualMaximum(5)); return sdf1.format(cal.getTime()); } public static void main(String[] args) throws Exception { UDFLastDay o = new UDFLastDay(); System.out.println(o.evaluate("2000-02-22")); //闰年的二月 System.out.println(o.evaluate("2018-02-22")); //非闰年的二月 System.out.println(o.evaluate("20181022")); System.out.println(o.evaluate("20180922")); } } 输出结果如下: 2000-02-29 2018-02-28 2018-10-31 2018-09-30