Custom Date tag: custom date based on pattern format. Default date is current day.
<CUSTOMDATE[+,-][value][scale],Pattern>
User can define the date format by customize the parameter Pattern.
Scale is only recognized within below option:
“Y” for year, “M” for month, “D” for day
Sample:
Suppose today is 16 Dec 2014
<CUSTOMDATE+1M,MMM yyyy> return as “Jan 2015”
<CUSTOMDATE-1D,ddMMyyyy> return as “15122015”
<CUSTOMDATE-2Y,dd*MMMMyyyy> return as “16*December2012”
/** * @param input * <CUSTOMDATE[+,-][number][scale],Pattern> * @return custom date based on pattern format. default date is current day */ private String customDate(String input) { input = input.substring(1, input.length() - 1); String pattern = input.split(",")[1].trim(); input = input.split(",")[0].trim(); Date now = new Date(); SimpleDateFormat ft = new SimpleDateFormat(pattern); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(now); int len = "CUSTOMDATE".length(); if (input.length() == len) { return ft.format(now); } else if (input.length() < len) { return "The format you input is incorrect! Please make sure the format is <CUSTOMDATE[+,-][number][scale],Pattern>"; } else { String math = input.substring(len, len + 1); int value = Integer.parseInt(input.substring(len + 1, input.length() - 1)); String scale = input.substring(input.length() - 1); if (math.equals("-")) { value = -value; } else if (!math.equals("+")) { return "Math is wrong. Can only use +/-."; } int field = 0; if (scale.equalsIgnoreCase("Y")) { field = 1; } else if (scale.equalsIgnoreCase("M")) { field = 2; } else if (scale.equalsIgnoreCase("D")) { field = 5; } if (field == 0) { return "The scale is wrong. Can only use Y/M/D."; } gc.add(field, value); } return ft.format(gc.getTime()); }