Most visited

Recently visited

Added in API level 3
Deprecated since API level 22

Time

public class Time
extends Object

java.lang.Object
   ↳ android.text.format.Time


这个类在API级别22已被弃用。
改为使用GregorianCalendar

CalendarGregorianCalendar类的替代方案。 Time类的一个实例代表以第二精度指定的时刻。 它是在struct tm之后建模的。 这个类不是线程安全的,不考虑闰秒。

这门课有许多问题,建议使用 GregorianCalendar代替。

已知的问题:

Summary

Constants

int EPOCH_JULIAN_DAY

这个时代的Julian日,即1970年1月1日的公历日。

int FRIDAY

int HOUR

int MINUTE

int MONDAY

int MONDAY_BEFORE_JULIAN_EPOCH

1969年12月29日这个时代的星期一的Julian日在公历上。

int MONTH

int MONTH_DAY

int SATURDAY

int SECOND

int SUNDAY

int THURSDAY

String TIMEZONE_UTC

int TUESDAY

int WEDNESDAY

int WEEK_DAY

int WEEK_NUM

int YEAR

int YEAR_DAY

Fields

public boolean allDay

如果这是allDay事件,则为true。

public long gmtoff

以UTC为单位的偏移量,包括任何DST偏移量。

public int hour

一天中的小时[0-23]

public int isDst

这一次是夏令时。

public int minute

分钟[0-59]

public int month

月[0-11]

public int monthDay

一个月中的某天[1-31]

public int second

秒[0-61](允许2秒)

public String timezone

这个时间的时区。

public int weekDay

星期几[0-6]

public int year

年。

public int yearDay

一年中的某一天[0-365]

Public constructors

Time(String timezoneId)

在由字符串参数“timezone”命名的时区中构造一个Time对象。

Time()

在默认时区中构建一个Time对象。

Time(Time other)

复制构造函数。

Public methods

boolean after(Time that)

如果此Time对象表示的时间出现在给定时间之后,则返回true。

boolean before(Time that)

如果此Time对象表示的时间在给定时间之前发生,则返回true。

void clear(String timezoneId)

清除所有值,将时区设置为给定的时区。

static int compare(Time a, Time b)

比较两个 Time对象,如果 a小于 b ,则返回负数;如果 a大于 b ,则 a正数;如果 ab 0。

String format(String format)

根据提供的格式字符串打印当前值。

String format2445()

格式根据RFC 2445 DATE-TIME类型。

String format3339(boolean allDay)

以RFC 3339格式返回一个字符串。

int getActualMaximum(int field)

给定其他字段的值,返回给定字段的最大可能值。

static String getCurrentTimezone()

返回当前为设备设置的时区字符串。

static int getJulianDay(long millis, long gmtoff)

计算特定时区中某个时间点的儒略日数。

static int getJulianMondayFromWeeksSinceEpoch(int week)

从该时代开始数周,并计算该周一的Julian日。

int getWeekNumber()

根据ISO 8601计算周数。

static int getWeeksSinceEpochFromJulianDay(int julianDay, int firstDayOfWeek)

返回自 EPOCH_JULIAN_DAY (1970年1月1日)调整为一周的第一天以来的一周。

static boolean isEpoch(Time time)

如果给定时间的日期是Julian日历(1970年1月1日格里历)上的时间,则返回true。

long normalize(boolean ignoreDst)

确保每个字段中的值都在范围内。

boolean parse(String s)

以RFC 2445格式或不包含“时间”字段的缩写格式解析日期时间字符串。

boolean parse3339(String s)

以RFC 3339格式解析时间。

void set(Time that)

将该值复制到此Time对象。

void set(int second, int minute, int hour, int monthDay, int month, int year)

设置字段。

void set(int monthDay, int month, int year)

设置给定字段的日期。

void set(long millis)

给定UTC毫秒,设置此Time对象中的字段。

long setJulianDay(int julianDay)

根据给定的Julian天数设置时间,该天数必须基于此Time对象中设置的相同时区。

void setToNow()

将给定时间对象的时间设置为当前时间。

void switchTimezone(String timezone)

转换此时间对象,以便表示的时间保持不变,但位于不同的时区。

long toMillis(boolean ignoreDst)

将此时间转换为毫秒。

String toString()

在YYYYMMDDTHHMMSS中返回当前时间 格式

Inherited methods

From class java.lang.Object

Constants

EPOCH_JULIAN_DAY

Added in API level 3
int EPOCH_JULIAN_DAY

这个时代的Julian日,即1970年1月1日的公历日。

常量值:2440588(0x00253d8c)

FRIDAY

Added in API level 3
int FRIDAY

常量值:5(0x00000005)

HOUR

Added in API level 3
int HOUR

常量值:3(0x00000003)

MINUTE

Added in API level 3
int MINUTE

常量值:2(0x00000002)

MONDAY

Added in API level 3
int MONDAY

常数值:1(0x00000001)

MONDAY_BEFORE_JULIAN_EPOCH

Added in API level 11
int MONDAY_BEFORE_JULIAN_EPOCH

1969年12月29日这个时代的星期一的Julian日在公历上。

常量值:2440585(0x00253d89)

MONTH

Added in API level 3
int MONTH

常量值:5(0x00000005)

MONTH_DAY

Added in API level 3
int MONTH_DAY

常量值:4(0x00000004)

SATURDAY

Added in API level 3
int SATURDAY

常数值:6(0x00000006)

SECOND

Added in API level 3
int SECOND

常数值:1(0x00000001)

SUNDAY

Added in API level 3
int SUNDAY

常量值:0(0x00000000)

THURSDAY

Added in API level 3
int THURSDAY

常量值:4(0x00000004)

TIMEZONE_UTC

Added in API level 3
String TIMEZONE_UTC

常数值:“UTC”

TUESDAY

Added in API level 3
int TUESDAY

常量值:2(0x00000002)

WEDNESDAY

Added in API level 3
int WEDNESDAY

Constant Value: 3 (0x00000003)

WEEK_DAY

Added in API level 3
int WEEK_DAY

常量值:7(0x00000007)

WEEK_NUM

Added in API level 3
int WEEK_NUM

常量值:9(0x00000009)

YEAR

Added in API level 3
int YEAR

Constant Value: 6 (0x00000006)

YEAR_DAY

Added in API level 3
int YEAR_DAY

常量值:8(0x00000008)

Fields

allDay

Added in API level 3
boolean allDay

如果这是allDay事件,则为true。 小时,分钟,秒字段全部为零,并且日期在所有时区中显示相同。

gmtoff

Added in API level 3
long gmtoff

以UTC为单位的偏移量,包括任何DST偏移量。

hour

Added in API level 3
int hour

一天中的小时[0-23]

isDst

Added in API level 3
int isDst

这一次是夏令时。 之一:

  • positive - in dst
  • 0 - not in dst
  • negative - unknown

minute

Added in API level 3
int minute

分钟[0-59]

month

Added in API level 3
int month

月[0-11]

monthDay

Added in API level 3
int monthDay

一个月中的某天[1-31]

second

Added in API level 3
int second

秒[0-61](允许2秒)

timezone

Added in API level 3
String timezone

这个时间的时区。 不应该为空。

weekDay

Added in API level 3
int weekDay

星期几[0-6]

year

Added in API level 3
int year

年。 例如,1970年。

yearDay

Added in API level 3
int yearDay

一年中的某一天[0-365]

Public constructors

Time

Added in API level 3
Time (String timezoneId)

在由字符串参数“timezone”命名的时区中构造一个Time对象。 时间初始化为1970年1月1日。

Parameters
timezoneId String: string containing the timezone to use.

也可以看看:

Time

Added in API level 3
Time ()

在默认时区中构建一个Time对象。 时间初始化为1970年1月1日。

Time

Added in API level 3
Time (Time other)

复制构造函数。 通过复制给定的时间对象构造一个Time对象。 没有标准化发生。

Public methods

after

Added in API level 3
boolean after (Time that)

如果此Time对象表示的时间出现在给定时间之后,则返回true。

相当于Time.compare(this, that) > 0 详情请参阅compare(Time, Time)

Parameters
that Time: a given Time object to compare against
Returns
boolean true if this time is greater than the given time

before

Added in API level 3
boolean before (Time that)

如果此Time对象表示的时间在给定时间之前发生,则返回true。

相当于Time.compare(this, that) < 0 详情请参阅compare(Time, Time)

Parameters
that Time: a given Time object to compare against
Returns
boolean true if this time is less than the given time

clear

Added in API level 3
void clear (String timezoneId)

清除所有值,将时区设置为给定的时区。 将isDst设置为负值以表示“未知”。

Parameters
timezoneId String: the timezone to use.

compare

Added in API level 3
int compare (Time a, 
                Time b)

比较两个 Time对象,如果 a小于 b ,则返回负数;如果 a大于 b ,则 a正数;如果 ab 0。

Time的日期/时间字段已设置为与可用时区信息相矛盾的本地时间时,此方法可能会返回错误答案。

Parameters
a Time: first Time instance to compare
b Time: second Time instance to compare
Returns
int a negative result if a is earlier, a positive result if b is earlier, or 0 if they are equal.
Throws
NullPointerException if either argument is null
IllegalArgumentException if allDay is true but hour, minute, and second are not 0.

format

Added in API level 3
String format (String format)

根据提供的格式字符串打印当前值。 看什么人strftime什么意思。 最后一个字符串必须少于256个字符。

Parameters
format String: a string containing the desired format.
Returns
String a String containing the current time expressed in the current locale.

format2445

Added in API level 3
String format2445 ()

格式根据RFC 2445 DATE-TIME类型。

与时区设置为“UTC”的时间格式相同(“%Y%m%dT%H%M%S”)或格式(“%Y%m%dT%H%M%SZ” 。

Returns
String

format3339

Added in API level 3
String format3339 (boolean allDay)

以RFC 3339格式返回一个字符串。

如果allDay为true,则表示时间为YMD

否则,如果时区是UTC,则表示时间为YMDTHMS UTC

否则,时间表示为YMDTHMS + - GMT

Parameters
allDay boolean
Returns
String string in the RFC 3339 format.

getActualMaximum

Added in API level 3
int getActualMaximum (int field)

给定其他字段的值,返回给定字段的最大可能值。 需要在MONTH_DAY和YEAR_DAY进行归一化处理。

Parameters
field int: one of the constants for HOUR, MINUTE, SECOND, etc.
Returns
int the maximum value for the field.

getCurrentTimezone

Added in API level 3
String getCurrentTimezone ()

返回当前为设备设置的时区字符串。

Returns
String

getJulianDay

Added in API level 3
int getJulianDay (long millis, 
                long gmtoff)

计算特定时区中某个时间点的儒略日数。 每个时区的给定日期的Julian日是相同的。 例如,2008年7月1日的Julian日是2454649。

呼叫者必须以秒为单位(以 toMillis(boolean) normalize(boolean) )以秒为单位传递时间(可由 toMillis(boolean)normalize(boolean)返回)和时区的UTC偏移(以秒为 gmtoff )。

Julian日对于测试两个事件是否发生在同一日历日期以及确定事件与现在的相对时间(“昨天”,“3天前”等)有关。

Parameters
millis long: the time in UTC milliseconds
gmtoff long: the offset from UTC in seconds
Returns
int the Julian day

getJulianMondayFromWeeksSinceEpoch

Added in API level 11
int getJulianMondayFromWeeksSinceEpoch (int week)

从该时代开始数周,并计算该周一的Julian日。 这假设包含EPOCH_JULIAN_DAY的一周被认为是第0周。它在包含该时代的一周的星期一之后的星期一星期几周返回Julian日。

Parameters
week int: Number of weeks since the epoch
Returns
int The julian day for the Monday of the given week since the epoch

getWeekNumber

Added in API level 3
int getWeekNumber ()

根据ISO 8601计算星期编号。由于此方法使用yearDay和weekDay字段,因此当前的Time对象必须已经标准化。

在IS0 8601,星期一从星期一开始。 一年中的第一周(第一周)由ISO 8601定义为第一周,并且在开始的一年中有四个或更多日子。 或者等同地,包含1月4日的一周。或者等同地,在该年的第一个星期四。

周数可以通过计算星期四进行计算。 第N周包含当年的第N个周四。

Returns
int the ISO week number.

getWeeksSinceEpochFromJulianDay

Added in API level 11
int getWeeksSinceEpochFromJulianDay (int julianDay, 
                int firstDayOfWeek)

返回自EPOCH_JULIAN_DAY (1970年1月1日)调整为一周的第一天以来的一周。 这需要一个茱莉安日和星期开始日,并计算从EPOCH_JULIAN_DAY那天开始的那一周,从0开始。*不要*用这个来计算一年中的ISO星期数。

Parameters
julianDay int: The julian day to calculate the week number for
firstDayOfWeek int: Which week day is the first day of the week, see SUNDAY
Returns
int Weeks since the epoch

isEpoch

Added in API level 3
boolean isEpoch (Time time)

如果给定时间的日期是Julian日历(1970年1月1日格里历)上的时间,则返回true。

当日期/时间字段设置为与可用时区信息相矛盾的本地时间时,此方法可能会返回错误的答案。

Parameters
time Time: the time to test
Returns
boolean true if epoch.

normalize

Added in API level 3
long normalize (boolean ignoreDst)

确保每个字段中的值都在范围内。 例如,如果此日历的当前值是3月32日,则normalize()会将其转换为4月1日。它也会填充weekDay,yearDay,isDst和gmtoff。

如果“ignoreDst”为真,则此方法在归一化之前将“isDst”字段设置为-1(“未知”值)。 然后,它计算以毫秒为单位的时间,并在字段解析为有效日期/时间时为“isDst”设置正确的值。

toMillis(boolean)有关何时使用 truefalse的“ignoreDst”,当更多信息 -1可能会返回。

Parameters
ignoreDst boolean
Returns
long the UTC milliseconds since the epoch, or -1

parse

Added in API level 3
boolean parse (String s)

以RFC 2445格式或不包含“时间”字段的缩写格式解析日期时间字符串。 例如,以下所有字符串都是有效的:

  • "20081013T160000Z"
  • "20081013T160000"
  • "20081013"
Returns whether or not the time is in UTC (ends with Z). If the string ends with "Z" then the timezone is set to UTC. If the date-time string included only a date and no time field, then the allDay field of this Time class is set to true and the hour, minute, and second fields are set to zero; otherwise (a time field was included in the date-time string) allDay is set to false. The fields weekDay, yearDay, and gmtoff are always set to zero, and the field isDst is set to -1 (unknown). To set those fields, call normalize(boolean) after parsing. To parse a date-time string and convert it to UTC milliseconds, do something like this:
   Time time = new Time();
   String date = "20081013T160000Z";
   time.parse(date);
   long millis = time.normalize(false);
 

Parameters
s String: the string to parse
Returns
boolean true if the resulting time value is in UTC time
Throws
TimeFormatException if s cannot be parsed.

parse3339

Added in API level 3
boolean parse3339 (String s)

以RFC 3339格式解析时间。 该方法还解析简单日期(即不包含时间或时间偏移的字符串)。 例如,以下所有字符串都是有效的:

  • "2008-10-13T16:00:00.000Z"
  • "2008-10-13T16:00:00.000+07:00"
  • "2008-10-13T16:00:00.000-07:00"
  • "2008-10-13"

如果字符串包含时间和时间偏移量,则将使用时间偏移量将时间值转换为UTC。

如果给定的字符串只包含一个日期(无时间字段),那么 allDay字段设置为true,并且 hourminute ,并 second字段设置为零。

Returns true if the resulting time value is in UTC time.

Parameters
s String: the string to parse
Returns
boolean true if the resulting time value is in UTC time
Throws
TimeFormatException if s cannot be parsed.

set

Added in API level 3
void set (Time that)

将该值复制到此Time对象。 没有标准化发生。

Parameters
that Time

set

Added in API level 3
void set (int second, 
                int minute, 
                int hour, 
                int monthDay, 
                int month, 
                int year)

设置字段。 将weekDay,yearDay和gmtoff设置为0,isDst设置为-1。 如果您需要这些,请致电normalize(boolean)

Parameters
second int
minute int
hour int
monthDay int
month int
year int

set

Added in API level 3
void set (int monthDay, 
                int month, 
                int year)

设置给定字段的日期。 还将allDay设置为true。 将weekDay,yearDay和gmtoff设置为0,isDst设置为-1。 如果您需要这些,请致电normalize(boolean)

Parameters
monthDay int: the day of the month (in the range [1,31])
month int: the zero-based month number (in the range [0,11])
year int: the year

set

Added in API level 3
void set (long millis)

给定UTC毫秒,设置此Time对象中的字段。 这个方法返回后,所有的字段都被标准化。 这也将“isDst”字段设置为正确的值。

Parameters
millis long: the time in UTC milliseconds since the epoch.

setJulianDay

Added in API level 3
long setJulianDay (int julianDay)

根据给定的Julian天数设置时间,该天数必须基于此Time对象中设置的相同时区。 无论如何,“gmtoff”字段不需要初始化,因为给定的Julian日可能具有不同于当前存储在该Time对象中的任何GMT偏移量。 在此方法返回后,所有字段将被标准化,并且在给定的Julian日的开始时间将被设置为上午12点。

The only exception to this is if 12am does not exist for that day because of daylight saving time. For example, Cairo, Eqypt moves time ahead one hour at 12am on April 25, 2008 and there are a few other places that also change daylight saving time at 12am. In those cases, the time will be set to 1am.

Parameters
julianDay int: the Julian day in the timezone for this Time object
Returns
long the UTC milliseconds for the beginning of the Julian day

setToNow

Added in API level 3
void setToNow ()

将给定时间对象的时间设置为当前时间。

switchTimezone

Added in API level 3
void switchTimezone (String timezone)

转换此时间对象,以便表示的时间保持不变,但位于不同的时区。 在某些情况下,此方法会自动调用normalize()。

如果日期/时间无法正常化,此方法可能会返回错误的结果。

Parameters
timezone String

toMillis

Added in API level 3
long toMillis (boolean ignoreDst)

将此时间转换为毫秒。 适合与标准java库进行交互。 时间自纪元以来以UTC毫秒为单位。 这确实一个隐含的标准化计算毫秒,但在这个时间对象更改任何字段。 如果你想标准化这个时间对象中的字段并获得毫秒,那么使用normalize(boolean)

如果“ignoreDst”为false,则此方法使用“isDst”字段的当前设置,并在给定时间内“isDst”字段错误时调整返回的时间。 有关此示例,请参阅下面的示例代码。

如果“ignoreDst”为true,则此方法将忽略此Time对象中“isDst”字段的当前设置,而是从此Time对象中的字段中找出正确的“isDst”值(尽可能最好)。 此方法无法找出“isDst”字段的正确值的唯一情况是该时间本质上不明确,因为它在从夏令时切换到标准时间时重复的小时内。

以下是 toMillis(true)调整时间的示例,假定2007年11月4日星期日DST更改为凌晨2点。

 Time time = new Time();
 time.set(4, 10, 2007);  // set the date to Nov 4, 2007, 12am
 time.normalize(false);       // this sets isDst = 1
 time.monthDay += 1;     // changes the date to Nov 5, 2007, 12am
 millis = time.toMillis(false);   // millis is Nov 4, 2007, 11pm
 millis = time.toMillis(true);    // millis is Nov 5, 2007, 12am
 

为避免此问题, 在添加或减去天数后或在明确设置“monthDay”字段后使用toMillis(true) 另一方面,如果你正在增加或减少小时或分钟,那么你应该使用toMillis(false)

你也应该使用 toMillis(false)如果你想读回,你与设置相同毫秒 set(long)

当日期/时间字段设置为与可用时区信息冲突的本地时间时,此方法可以返回-1 例如,当夏令转变导致跳过一小时:该小时内次将返回-1如果isDst = -1 set(Time)或解析日期字符串后。

Parameters
ignoreDst boolean
Returns
long

toString

Added in API level 3
String toString ()

在YYYYMMDDTHHMMSS中返回当前时间 格式

Returns
String a string representation of the object.

Hooray!