Added some other date formatting conveniences.
git-svn-id: https://samskivert.googlecode.com/svn/trunk@1573 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
@@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
package com.samskivert.velocity;
|
package com.samskivert.velocity;
|
||||||
|
|
||||||
|
import java.text.DateFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
@@ -103,21 +104,65 @@ public class I18nTool
|
|||||||
*/
|
*/
|
||||||
public String date (String format, Object arg)
|
public String date (String format, Object arg)
|
||||||
{
|
{
|
||||||
Date when = null;
|
Date when = massageDate(arg);
|
||||||
if (arg instanceof Long) {
|
if (when == null) {
|
||||||
when = new Date(((Long)arg).longValue());
|
|
||||||
} else if (arg instanceof Date) {
|
|
||||||
when = (Date)arg;
|
|
||||||
} else {
|
|
||||||
System.err.println("Date provided with invalid argument " +
|
|
||||||
"[fmt=" + format + ", arg=" + arg + ", aclass=" +
|
|
||||||
StringUtil.shortClassName(arg) + "].");
|
|
||||||
return format;
|
return format;
|
||||||
}
|
}
|
||||||
SimpleDateFormat fmt = new SimpleDateFormat(format, _req.getLocale());
|
SimpleDateFormat fmt = new SimpleDateFormat(format, _req.getLocale());
|
||||||
return fmt.format(when);
|
return fmt.format(when);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats the supplied argument (a {@link Long} or {@link Date})
|
||||||
|
* using a {@link DateFormat} obtained in the {@link DateFormat#SHORT}
|
||||||
|
* style.
|
||||||
|
*/
|
||||||
|
public String shortDate (Object arg)
|
||||||
|
{
|
||||||
|
return date(DateFormat.SHORT, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like {@link #shortDate} but in the {@link DateFormat#MEDIUM} style.
|
||||||
|
*/
|
||||||
|
public String mediumDate (Object arg)
|
||||||
|
{
|
||||||
|
return date(DateFormat.MEDIUM, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Like {@link #shortDate} but in the {@link DateFormat#LONG} style.
|
||||||
|
*/
|
||||||
|
public String longDate (Object arg)
|
||||||
|
{
|
||||||
|
return date(DateFormat.LONG, arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Helper function for formatting dates. */
|
||||||
|
protected String date (int style, Object arg)
|
||||||
|
{
|
||||||
|
Date when = massageDate(arg);
|
||||||
|
if (when == null) {
|
||||||
|
return "<!" + arg + ">";
|
||||||
|
}
|
||||||
|
return DateFormat.getDateInstance(style, _req.getLocale()).format(when);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Converts an argument to a {@link Date} if possible. */
|
||||||
|
protected Date massageDate (Object arg)
|
||||||
|
{
|
||||||
|
if (arg instanceof Long) {
|
||||||
|
return new Date(((Long)arg).longValue());
|
||||||
|
} else if (arg instanceof Date) {
|
||||||
|
return (Date)arg;
|
||||||
|
} else {
|
||||||
|
System.err.println("Date provided with invalid argument " +
|
||||||
|
"[arg=" + arg + ", aclass=" +
|
||||||
|
StringUtil.shortClassName(arg) + "].");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** The servlet request was are providing i18n messages for. */
|
/** The servlet request was are providing i18n messages for. */
|
||||||
protected HttpServletRequest _req;
|
protected HttpServletRequest _req;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user