📄 datetool.java
字号:
{
return getValue(field, getCalendar());
}
/**
* Returns the specified value of the specified date,
* or null if the field or date is invalid. The field may be
* an Integer or it may be the name of the field as a String.
*
* @param field the corresponding Integer value or String name of the desired value
* @param date the date/calendar from which the field value will be taken
* @since VelocityTools 1.2
*/
public Integer getValue(Object field, Object date)
{
if (field == null)
{
return null;
}
int fieldValue;
if (field instanceof Integer)
{
fieldValue = ((Integer)field).intValue();
}
// all the public static field names are upper case
String fstr = field.toString().toUpperCase();
try
{
Field clsf = Calendar.class.getField(fstr);
fieldValue = clsf.getInt(Calendar.getInstance());
}
catch (Exception e)
{
return null;
}
return getValue(fieldValue, date);
}
/**
* Returns the specified value of the specified date,
* or null if the field or date is invalid.
*
* @param field the int for the desired field (e.g. Calendar.MONTH)
* @param date the date/calendar from which the field value will be taken
* @since VelocityTools 1.2
*/
public Integer getValue(int field, Object date)
{
Calendar cal = toCalendar(date);
if (cal == null)
{
return null;
}
return new Integer(cal.get(field));
}
// ------------------------- formatting methods ---------------------------
/**
* Returns a formatted string representing the date returned by
* {@link #getDate()}. In its default implementation, this method
* allows you to retrieve the current date in standard formats by
* simply doing things like <code>$date.medium</code> or
* <code>$date.full</code>. If you want only the date or time portion
* you can specify that along with the standard formats. (e.g.
* <code>$date.medium_date</code> or <code>$date.short_time</code>)
* More complex or custom formats can be retrieved
* by using the full method syntax. (e.g. $date.get('E, MMMM d'))
*
* @param format the formatting instructions
* @return a formatted representation of the date returned by
* {@link #getDate()}
* @see #format(String format, Object obj, Locale locale, TimeZone timezone)
* @since VelocityTools 1.1
*/
public String get(String format)
{
return format(format, getDate());
}
/**
* Returns a formatted string representing the date and/or time given by
* {@link #getDate()} in standard, localized patterns.
*
* @param dateStyle the style pattern for the date
* @param timeStyle the style pattern for the time
* @return a formatted representation of the date returned by
* {@link #getDate()}
* @see DateFormat
* @see #format(String dateStyle, String timeStyle, Object obj, Locale locale, TimeZone timezone)
* @since VelocityTools 1.1
*/
public String get(String dateStyle, String timeStyle)
{
return format(dateStyle, timeStyle, getDate(), getLocale());
}
/**
* Converts the specified object to a date and formats it according to
* the pattern or style returned by {@link #getFormat()}.
*
* @param obj the date object to be formatted
* @return the specified date formatted as a string
* @see #format(String format, Object obj, Locale locale, TimeZone timezone)
* @since VelocityTools 1.1
*/
public String format(Object obj)
{
return format(getFormat(), obj);
}
/**
* Converts the specified object to a date and returns
* a formatted string representing that date in the locale
* returned by {@link #getLocale()}.
*
* @param format the formatting instructions
* @param obj the date object to be formatted
* @return a formatted string for this locale representing the specified
* date or <code>null</code> if the parameters are invalid
* @see #format(String format, Object obj, Locale locale, TimeZone timezone)
*/
public String format(String format, Object obj)
{
return format(format, obj, getLocale());
}
/**
* Converts the specified object to a date and returns
* a formatted string representing that date in the specified
* {@link Locale}.
*
* @param format the formatting instructions
* @param obj the date object to be formatted
* @param locale the locale to be used when formatting
* @return the given date as a formatted string
* @see #format(String format, Object obj, Locale locale, TimeZone timezone)
*/
public String format(String format, Object obj, Locale locale)
{
return format(format, obj, locale, getTimeZone());
}
/**
* Returns a formatted string representing the specified date,
* {@link Locale}, and {@link TimeZone}.
*
* <p>
* The specified format may be a standard style pattern ('full', 'long',
* 'medium', 'short', or 'default').
* </p>
* <p>
* You may also specify that you want only the date or time portion be
* appending '_date' or '_time' respectively to the standard style pattern.
* (e.g. 'full_date' or 'long_time')
* </p>
* <p>
* If the format fits neither of these patterns, then the output
* will be formatted according to the symbols defined by
* {@link SimpleDateFormat}:
* <pre>
* Symbol Meaning Presentation Example
* ------ ------- ------------ -------
* G era designator (Text) AD
* y year (Number) 1996
* M month in year (Text & Number) July & 07
* d day in month (Number) 10
* h hour in am/pm (1~12) (Number) 12
* H hour in day (0~23) (Number) 0
* m minute in hour (Number) 30
* s second in minute (Number) 55
* S millisecond (Number) 978
* E day in week (Text) Tuesday
* D day in year (Number) 189
* F day of week in month (Number) 2 (2nd Wed in July)
* w week in year (Number) 27
* W week in month (Number) 2
* a am/pm marker (Text) PM
* k hour in day (1~24) (Number) 24
* K hour in am/pm (0~11) (Number) 0
* z time zone (Text) Pacific Standard Time
* ' escape for text (Delimiter)
* '' single quote (Literal) '
*
* Examples: "E, MMMM d" will result in "Tue, July 24"
* "EEE, M-d (H:m)" will result in "Tuesday, 7-24 (14:12)"
* </pre>
* </p>
*
* @param format the custom or standard pattern to be used
* @param obj the date to format
* @param locale the {@link Locale} to format the date for
* @param timezone the {@link TimeZone} to be used when formatting
* @return a formatted string representing the specified date or
* <code>null</code> if the parameters are invalid
* @since VelocityTools 1.1
*/
public String format(String format, Object obj,
Locale locale, TimeZone timezone)
{
Date date = toDate(obj);
DateFormat df = getDateFormat(format, locale, timezone);
if (date == null || df == null)
{
return null;
}
return df.format(date);
}
/**
* Returns the specified date as a string formatted according to the
* specified date and/or time styles.
*
* @param dateStyle the style pattern for the date
* @param timeStyle the style pattern for the time
* @param obj the date to be formatted
* @return a formatted representation of the given date
* @see #format(String dateStyle, String timeStyle, Object obj, Locale locale, TimeZone timezone)
* @since VelocityTools 1.1
*/
public String format(String dateStyle, String timeStyle, Object obj)
{
return format(dateStyle, timeStyle, obj, getLocale());
}
/**
* Returns the specified date as a string formatted according to the
* specified {@link Locale} and date and/or time styles.
*
* @param dateStyle the style pattern for the date
* @param timeStyle the style pattern for the time
* @param obj the date to be formatted
* @param locale the {@link Locale} to be used for formatting the date
* @return a formatted representation of the given date
* @see #format(String dateStyle, String timeStyle, Object obj, Locale locale, TimeZone timezone)
* @since VelocityTools 1.1
*/
public String format(String dateStyle, String timeStyle,
Object obj, Locale locale)
{
return format(dateStyle, timeStyle, obj, locale, getTimeZone());
}
/**
* Returns the specified date as a string formatted according to the
* specified {@link Locale} and date and/or time styles.
*
* @param dateStyle the style pattern for the date
* @param timeStyle the style pattern for the time
* @param obj the date to be formatted
* @param locale the {@link Locale} to be used for formatting the date
* @param timezone the {@link TimeZone} the date should be formatted for
* @return a formatted representation of the given date
* @see java.text.DateFormat
* @see #format(String dateStyle, String timeStyle, Object obj, Locale locale, TimeZone timezone)
* @since VelocityTools 1.1
*/
public String format(String dateStyle, String timeStyle,
Object obj, Locale locale, TimeZone timezone)
{
Date date = toDate(obj);
DateFormat df = getDateFormat(dateStyle, timeStyle, locale, timezone);
if (date == null || df == null)
{
return null;
}
return df.format(date);
}
// -------------------------- DateFormat creation methods --------------
/**
* Returns a {@link DateFormat} instance for the specified
* format, {@link Locale}, and {@link TimeZone}. If the format
* specified is a standard style pattern, then a date-time instance
* will be returned with both the date and time styles set to the
* specified style. If it is a custom format, then a customized
* {@link SimpleDateFormat} will be returned.
*
* @param format the custom or standard formatting pattern to be used
* @param locale the {@link Locale} to be used
* @param timezone the {@link TimeZone} to be used
* @return an instance of {@link DateFormat}
* @see SimpleDateFormat
* @see DateFormat
* @since VelocityTools 1.1
*/
public DateFormat getDateFormat(String format, Locale locale,
TimeZone timezone)
{
if (format == null)
{
return null;
}
DateFormat df = null;
// do they want a date instance
if (format.endsWith("_date"))
{
String fmt = format.substring(0, format.length() - 5);
int style = getStyleAsInt(fmt);
df = getDateFormat(style, -1, locale, timezone);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -