Merge "Adds a time zone parameter to formatDateRange" into gingerbread

This commit is contained in:
Erik
2010-09-08 10:58:12 -07:00
committed by Android (Google) Code Review
2 changed files with 77 additions and 9 deletions

View File

@ -164852,6 +164852,29 @@
<parameter name="flags" type="int"> <parameter name="flags" type="int">
</parameter> </parameter>
</method> </method>
<method name="formatDateRange"
return="java.util.Formatter"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="context" type="android.content.Context">
</parameter>
<parameter name="formatter" type="java.util.Formatter">
</parameter>
<parameter name="startMillis" type="long">
</parameter>
<parameter name="endMillis" type="long">
</parameter>
<parameter name="flags" type="int">
</parameter>
<parameter name="timeZone" type="java.lang.String">
</parameter>
</method>
<method name="formatDateTime" <method name="formatDateTime"
return="java.lang.String" return="java.lang.String"
abstract="false" abstract="false"
@ -165345,7 +165368,7 @@
value="8192" value="8192"
static="true" static="true"
final="true" final="true"
deprecated="not deprecated" deprecated="deprecated"
visibility="public" visibility="public"
> >
</field> </field>

View File

@ -168,6 +168,12 @@ public class DateUtils
public static final int FORMAT_CAP_NOON = 0x00400; public static final int FORMAT_CAP_NOON = 0x00400;
public static final int FORMAT_NO_MIDNIGHT = 0x00800; public static final int FORMAT_NO_MIDNIGHT = 0x00800;
public static final int FORMAT_CAP_MIDNIGHT = 0x01000; public static final int FORMAT_CAP_MIDNIGHT = 0x01000;
/**
* @deprecated Use
* {@link #formatDateRange(Context, Formatter, long, long, int, String) formatDateRange}
* and pass in {@link Time#TIMEZONE_UTC Time.TIMEZONE_UTC} for the timeZone instead.
*/
@Deprecated
public static final int FORMAT_UTC = 0x02000; public static final int FORMAT_UTC = 0x02000;
public static final int FORMAT_ABBREV_TIME = 0x04000; public static final int FORMAT_ABBREV_TIME = 0x04000;
public static final int FORMAT_ABBREV_WEEKDAY = 0x08000; public static final int FORMAT_ABBREV_WEEKDAY = 0x08000;
@ -946,12 +952,12 @@ public class DateUtils
* {@link java.util.Formatter} instance and use the version of * {@link java.util.Formatter} instance and use the version of
* {@link #formatDateRange(Context, long, long, int) formatDateRange} * {@link #formatDateRange(Context, long, long, int) formatDateRange}
* that takes a {@link java.util.Formatter}. * that takes a {@link java.util.Formatter}.
* *
* @param context the context is required only if the time is shown * @param context the context is required only if the time is shown
* @param startMillis the start time in UTC milliseconds * @param startMillis the start time in UTC milliseconds
* @param endMillis the end time in UTC milliseconds * @param endMillis the end time in UTC milliseconds
* @param flags a bit mask of options See * @param flags a bit mask of options See
* {@link #formatDateRange(Context, long, long, int) formatDateRange} * {@link #formatDateRange(Context, Formatter, long, long, int, String) formatDateRange}
* @return a string containing the formatted date/time range. * @return a string containing the formatted date/time range.
*/ */
public static String formatDateRange(Context context, long startMillis, public static String formatDateRange(Context context, long startMillis,
@ -960,6 +966,29 @@ public class DateUtils
return formatDateRange(context, f, startMillis, endMillis, flags).toString(); return formatDateRange(context, f, startMillis, endMillis, flags).toString();
} }
/**
* Formats a date or a time range according to the local conventions.
* <p>
* Note that this is a convenience method for formatting the date or
* time range in the local time zone. If you want to specify the time
* zone please use
* {@link #formatDateRange(Context, Formatter, long, long, int, String) formatDateRange}.
*
* @param context the context is required only if the time is shown
* @param formatter the Formatter used for formatting the date range.
* Note: be sure to call setLength(0) on StringBuilder passed to
* the Formatter constructor unless you want the results to accumulate.
* @param startMillis the start time in UTC milliseconds
* @param endMillis the end time in UTC milliseconds
* @param flags a bit mask of options See
* {@link #formatDateRange(Context, Formatter, long, long, int, String) formatDateRange}
* @return a string containing the formatted date/time range.
*/
public static Formatter formatDateRange(Context context, Formatter formatter, long startMillis,
long endMillis, int flags) {
return formatDateRange(context, formatter, startMillis, endMillis, flags, null);
}
/** /**
* Formats a date or a time range according to the local conventions. * Formats a date or a time range according to the local conventions.
* *
@ -1076,8 +1105,9 @@ public class DateUtils
* FORMAT_24HOUR takes precedence. * FORMAT_24HOUR takes precedence.
* *
* <p> * <p>
* If FORMAT_UTC is set, then the UTC timezone is used for the start * If FORMAT_UTC is set, then the UTC time zone is used for the start
* and end milliseconds. * and end milliseconds unless a time zone is specified. If a time zone
* is specified it will be used regardless of the FORMAT_UTC flag.
* *
* <p> * <p>
* If FORMAT_ABBREV_TIME is set and 12-hour time format is used, then the * If FORMAT_ABBREV_TIME is set and 12-hour time format is used, then the
@ -1109,11 +1139,13 @@ public class DateUtils
* @param startMillis the start time in UTC milliseconds * @param startMillis the start time in UTC milliseconds
* @param endMillis the end time in UTC milliseconds * @param endMillis the end time in UTC milliseconds
* @param flags a bit mask of options * @param flags a bit mask of options
* * @param timeZone the time zone to compute the string in. Use null for local
* or if the FORMAT_UTC flag is being used.
*
* @return the formatter with the formatted date/time range appended to the string buffer. * @return the formatter with the formatted date/time range appended to the string buffer.
*/ */
public static Formatter formatDateRange(Context context, Formatter formatter, long startMillis, public static Formatter formatDateRange(Context context, Formatter formatter, long startMillis,
long endMillis, int flags) { long endMillis, int flags, String timeZone) {
Resources res = Resources.getSystem(); Resources res = Resources.getSystem();
boolean showTime = (flags & FORMAT_SHOW_TIME) != 0; boolean showTime = (flags & FORMAT_SHOW_TIME) != 0;
boolean showWeekDay = (flags & FORMAT_SHOW_WEEKDAY) != 0; boolean showWeekDay = (flags & FORMAT_SHOW_WEEKDAY) != 0;
@ -1130,7 +1162,14 @@ public class DateUtils
// computation below that'd otherwise be thrown out. // computation below that'd otherwise be thrown out.
boolean isInstant = (startMillis == endMillis); boolean isInstant = (startMillis == endMillis);
Time startDate = useUTC ? new Time(Time.TIMEZONE_UTC) : new Time(); Time startDate;
if (timeZone != null) {
startDate = new Time(timeZone);
} else if (useUTC) {
startDate = new Time(Time.TIMEZONE_UTC);
} else {
startDate = new Time();
}
startDate.set(startMillis); startDate.set(startMillis);
Time endDate; Time endDate;
@ -1139,7 +1178,13 @@ public class DateUtils
endDate = startDate; endDate = startDate;
dayDistance = 0; dayDistance = 0;
} else { } else {
endDate = useUTC ? new Time(Time.TIMEZONE_UTC) : new Time(); if (timeZone != null) {
endDate = new Time(timeZone);
} else if (useUTC) {
endDate = new Time(Time.TIMEZONE_UTC);
} else {
endDate = new Time();
}
endDate.set(endMillis); endDate.set(endMillis);
int startJulianDay = Time.getJulianDay(startMillis, startDate.gmtoff); int startJulianDay = Time.getJulianDay(startMillis, startDate.gmtoff);
int endJulianDay = Time.getJulianDay(endMillis, endDate.gmtoff); int endJulianDay = Time.getJulianDay(endMillis, endDate.gmtoff);