Index: lams_build/lib/lams/lams.jar =================================================================== diff -u -r53688d3b79ba27a37f907f35d38c4e3385596663 -r2571c8a7cb60a9ced60bec52c5543b648c1360a3 Binary files differ Index: lams_common/src/java/org/lamsfoundation/lams/util/DateUtil.java =================================================================== diff -u -r6f7031f1ac1eb389133a9c306cc6ea178eb88573 -r2571c8a7cb60a9ced60bec52c5543b648c1360a3 --- lams_common/src/java/org/lamsfoundation/lams/util/DateUtil.java (.../DateUtil.java) (revision 6f7031f1ac1eb389133a9c306cc6ea178eb88573) +++ lams_common/src/java/org/lamsfoundation/lams/util/DateUtil.java (.../DateUtil.java) (revision 2571c8a7cb60a9ced60bec52c5543b648c1360a3) @@ -30,9 +30,16 @@ import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; +import java.util.Locale; import java.util.TimeZone; +import javax.servlet.http.HttpSession; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; + + /** * Date utility class that helps the conversion between time * @@ -46,7 +53,6 @@ public static final String WDDX_FORMAT = "yyyy-MM-dd'T'HH:mm:ssZ"; public static final String LAMS_FLASH_FORMAT = "dd/M/yyyy h:mm a"; - private static final DateFormat JSON_DATE_OUTPUT_FORMATTER = new SimpleDateFormat("d MMMM yyyy h:mm:ss a"); /** * Convert your local time to Universal Time Coordinator. @@ -185,11 +191,82 @@ } - /** - * Convert a date to a String for sending to the client via JSON. + private static final int TYPE_BOTH = 1; + private static final int TYPE_DATE = 2; + private static final int TYPE_TIME = 3; + + /** + * Equivalent of . Use for processing a date to send to the client via JSON. + * Locale comes from request.getLocale(); + * Same as calling convertToStringForJSON(value, DateFormat.MEDIUM, TYPE_BOTH, locale) + * @param value + * @param locale + * @return */ - public static String convertToStringForJSON(Date date) { - return JSON_DATE_OUTPUT_FORMATTER.format(date); + public static String convertToStringForJSON(Date value, Locale locale) { + return convertToStringForJSON(value, DateFormat.MEDIUM, TYPE_BOTH, locale); } + /** + * Equivalent of . Use for processing a date to send to the client via JSON. + * Locale comes from request.getLocale(); + * @param value + * @param style DateFormat.MEDIUM, DateFormat.SHORT, DateFormat.FULL + * @param type TYPE_BOTH (both data and time), TYPE_DATE or TYPE_TIME + * @param locale + * @return + */ + public static String convertToStringForJSON(Date value, Integer style, Locale locale) { + return convertToStringForJSON(value, style, TYPE_BOTH, locale); + } + + + /** + * Equivalent of . Use for processing a date to send to the client via JSON. + * Locale comes from request.getLocale(); + * @param value + * @param type TYPE_BOTH (both data and time), TYPE_DATE or TYPE_TIME + * @param locale + * @return + */ + public static String convertToStringForJSON(Date value, Integer style, Integer type, Locale locale) { + + HttpSession ss = SessionManager.getSession(); + UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER); + TimeZone tz = user.getTimeZone(); + + int dateStyle, timeStyle; + switch (style) { + case DateFormat.SHORT: + dateStyle = DateFormat.SHORT; + timeStyle = DateFormat.SHORT; + break; + case DateFormat.FULL: + dateStyle = DateFormat.LONG; + timeStyle = DateFormat.FULL; + break; + default: + dateStyle = DateFormat.LONG; + timeStyle = DateFormat.MEDIUM; + } + + DateFormat df = null; + switch (type) { + case TYPE_DATE: + df = DateFormat.getDateInstance(dateStyle, locale); + break; + case TYPE_TIME: + df = DateFormat.getTimeInstance(timeStyle, locale); + break; + default: + df = DateFormat.getDateTimeInstance(dateStyle, timeStyle, locale); + } + + if (tz != null) + df.setTimeZone(tz); + + return df.format(value); + } + + }