public boolean end()

in core/src/main/java/org/apache/struts2/components/Date.java [290:361]


    public boolean end(Writer writer, String body) {
        TextProvider textProvider = findProviderInStack();

        ZonedDateTime date = null;
        final ZoneId tz = getTimeZone();
        // find the name on the valueStack
        Object dateObject = findValue(name);
        if (dateObject instanceof java.sql.Date) {
            date = ((java.sql.Date) dateObject).toLocalDate().atTime(LocalTime.now(tz)).atZone(tz);
        } else if (dateObject instanceof java.sql.Time) {
            date = ((java.sql.Time) dateObject).toLocalTime().atDate(ZonedDateTime.now(tz).toLocalDate()).atZone(tz);
        } else if (dateObject instanceof java.util.Date) {
            date = ((java.util.Date) dateObject).toInstant().atZone(tz);
        } else if (dateObject instanceof Calendar) {
            date = ((Calendar) dateObject).toInstant().atZone(tz);
        } else if (dateObject instanceof Long) {
            date = Instant.ofEpochMilli((long) dateObject).atZone(tz);
        } else if (dateObject instanceof LocalDateTime) {
            date = ((LocalDateTime) dateObject).atZone(tz);
        } else if (dateObject instanceof LocalDate) {
            date = ((LocalDate) dateObject).atStartOfDay(tz);
        } else if (dateObject instanceof LocalTime) {
            date = ((LocalTime) dateObject).atDate(ZonedDateTime.now(tz).toLocalDate()).atZone(tz);
        } else if (dateObject instanceof Instant) {
            date = ((Instant) dateObject).atZone(tz);
        } else {
            if (devMode) {
                String developerNotification = "";
                if (textProvider != null) {
                    developerNotification = textProvider.getText(
                        "devmode.notification",
                        "Developer Notification:\n{0}",
                        new String[]{
                            "Expression [" + name + "] passed to <s:date/> tag which was evaluated to [" + dateObject + "]("
                                + (dateObject != null ? dateObject.getClass() : "null") + ") isn't supported!"
                        }
                    );
                }
                LOG.warn(developerNotification);
            } else {
                LOG.debug("Expression [{}] passed to <s:date/> tag which was evaluated to [{}]({}) isn't supported!",
                    name, dateObject, (dateObject != null ? dateObject.getClass() : "null"));
            }
        }

        //try to find the format on the stack
        if (format != null) {
            format = findString(format);
        }
        String msg;
        if (date != null) {
            if (textProvider != null) {
                if (nice) {
                    msg = formatTime(textProvider, date);
                } else {
                    msg = formatDate(textProvider, date);
                }
                if (msg != null) {
                    try {
                        if (getVar() == null) {
                            writer.write(msg);
                        } else {
                            putInContext(msg);
                        }
                    } catch (IOException e) {
                        LOG.error("Could not write out Date tag", e);
                    }
                }
            }
        }
        return super.end(writer, "");
    }