GregorianCalendar 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
GregorianCalendar 是一个具体子类 Calendar ,提供世界上大多数使用的标准日历系统。
[Android.Runtime.Register("java/util/GregorianCalendar", DoNotGenerateAcw=true)]
public class GregorianCalendar : Java.Util.Calendar
[<Android.Runtime.Register("java/util/GregorianCalendar", DoNotGenerateAcw=true)>]
type GregorianCalendar = class
inherit Calendar
- 继承
- 属性
注解
GregorianCalendar 是一个具体子类 Calendar ,提供世界上大多数使用的标准日历系统。
GregorianCalendar 是一个混合日历,支持朱利安和公历系统,支持单个不连续,默认情况下对应于公历的建立日期(10 月 15 日,1582 年 10 月 15 日在某些国家/地区,后来又在其他国家)。 调用方 #setGregorianChange(Date) setGregorianChange()可以更改直接转换日期。
从历史上看,在那些先采用公历的国家,1582年10月4日(朱利安)之后是1582年10月15日(公历)。 此日历可正确建模。 在公历直接转换之前, GregorianCalendar 实现朱利安日历。 公历和朱利安日历的唯一区别是跃年规则。 朱利安日历每四年指定一次跃年,而公历则省略百年,而 400 年不可见的世纪年。
GregorianCalendar
<实现 em>proleptic</em> Gregorian 和 Julian 日历。 也就是说,通过无限期地向后和向前推断当前规则来计算日期。 因此, GregorianCalendar 可用于所有年份,以生成有意义的和一致的结果。 但是,使用日期 GregorianCalendar 在历史上仅从 3 月 1 日 4 AD 开始准确,当时采用现代朱利安日历规则。 在此日期之前,跳跃年规则被不规则地应用,在公元前45年之前,朱利安日历甚至不存在。
在公历机构之前,元旦是3月25日。 为了避免混淆,此日历始终使用 1 月 1 日。 如果需要在公历公历更改前的日期以及介于 1 月 1 日至 3 月 24 日期间的日期,可以进行手动调整。
<h2>“week_and_year”>年周和周年</h2>
为 Calendar#WEEK_OF_YEAR WEEK_OF_YEAR 字段计算的值范围为 1 到 53。 日历年的第一周是最早的七天时段,从该时间段开始 Calendar#getFirstDayOfWeek() getFirstDayOfWeek() ,该时间段至少包含该年份的 Calendar#getMinimalDaysInFirstWeek() getMinimalDaysInFirstWeek() 天数。 因此,这取决于 1 月 1 日一周的值getMinimalDaysInFirstWeek()getFirstDayOfWeek()和日期。 第 1 周到第二年的第 1 周(独占)按顺序编号为 2 到 52 或 53(除参与 Julian-Gregorian 过渡的年份除外)。
构造区域设置相关的资源时GregorianCalendar,使用getFirstDayOfWeek()依赖区域设置的资源初始化这些和getMinimalDaysInFirstWeek()值。 “iso8601_compatible_setting”>周确定与 ISO 8601 标准(如果为 MONDAYgetMinimalDaysInFirstWeek() 4)getFirstDayOfWeek()兼容,在首选标准的区域设置中使用哪些值。 可以通过调用 Calendar#setFirstDayOfWeek(int) setFirstDayOfWeek() 和 Calendar#setMinimalDaysInFirstWeek(int) setMinimalDaysInFirstWeek().
“week_year”><em>周年</em> 与周期 WEEK_OF_YEAR 同步。 第一周和最后几周(含)之间的所有周具有相同 <的 em>周年</em> 值。 因此,一周中的第一天和最后几天可能具有不同的日历年值。
例如,1998 年 1 月 1 日是星期四。 如果 getFirstDayOfWeek() 为 MONDAYgetMinimalDaysInFirstWeek() 4(ISO 8601 标准兼容设置),则 1998 年 12 月 29 日开始于 1997 年 12 月 29 日,结束于 1998 年 1 月 4 日。 1997年日历年的最后三天,该周年为1998年。 然而, getFirstDayOfWeek()SUNDAY如果是,则1998年1月4日的第1周从1998年1月4日开始,1998年1月10日结束;1998年的头三天则属于1997年第53周,其周年为1997年。
<h3>月</h3 周>
为 WEEK_OF_MONTH 字段范围从 0 到 6 计算的值。 一个月的第 1 周( WEEK_OF_MONTH = 1与日)是该月中最早的 getMinimalDaysInFirstWeek() 连续天数集,结束于前一 getFirstDayOfWeek()天。 与一年的第 1 周不同,一个月的第 1 周可能短于 7 天,不需要开始 getFirstDayOfWeek(),并且不包括前一个月的天数。 第 1 周前一个月的天数为 WEEK_OF_MONTH 0。
例如,如果 getFirstDayOfWeek() 为 SUNDAYgetMinimalDaysInFirstWeek() 4,则 1998 年 1 月的第一周为 1 月 4 日至 1 月 10 日星期六。 这些天有 1 个 WEEK_OF_MONTH 。 星期四,1月1日至周六,1月3日有一个 WEEK_OF_MONTH 0。 如果 getMinimalDaysInFirstWeek() 更改为 3,则 1 月 1 日至 1 月 3 日有 1 个 WEEK_OF_MONTH 。
<h3>默认字段值</h3>
该方法 clear 设置未定义的日历字段。
GregorianCalendar 如果未定义日历字段的值,则为每个日历字段使用以下默认值。
<table class=“striped” style=“text-align: left;width: 66%;”><caption style=“display:none”>GregorianCalendar default field values/caption<>thead<>tr<>th scope=“col”> Field </th><scope=“col”> Default Value <</th/tr<>/thead><tbody<>tr><th scope=“row”ERA<>/th><<> td><AD/tr<>tr<>th scope=“row”<>YEAR/th<>td><>1970</td></tr><tr><th scope=“row”>MONTH</th><td/td>><<JANUARY/tr><tr><th scope=“row”><DAY_OF_MONTH/th><td/td>1><</tr><tr><th scope=“row”><DAY_OF_WEEK/th><td/td></tr tr><th scope=“row”><WEEK_OF_MONTH/th><td>the first day of week0<></<>td></tr><tr><th scope=“row”>DAY_OF_WEEK_IN_MONTH</th><td/td><><1/tr><tr><th scope=“row”>AM_PM</th><td/td><<AM>/tr><tr><th scope=“row”><HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND/th><td/td><0<>/tr></tbody></table br>><默认值不适用于上面未列出的字段。
<strong Example:>/strong<><blockquote>
// get the supported ids for GMT-08:00 (Pacific Standard Time)
String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);
// if no ids were returned, something is wrong. get out.
if (ids.length == 0)
System.exit(0);
// begin output
System.out.println("Current Time");
// create a Pacific Standard Time time zone
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);
// set up rules for Daylight Saving Time
pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);
// create a GregorianCalendar with the Pacific Daylight time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(pdt);
Date trialTime = new Date();
calendar.setTime(trialTime);
// print out a bunch of interesting things
System.out.println("ERA: " + calendar.get(Calendar.ERA));
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
System.out.println("ZONE_OFFSET: "
+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000)));
System.out.println("DST_OFFSET: "
+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000)));
System.out.println("Current Time, with hour reset to 3");
calendar.clear(Calendar.HOUR_OF_DAY); // so doesn't override
calendar.set(Calendar.HOUR, 3);
System.out.println("ERA: " + calendar.get(Calendar.ERA));
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + calendar.get(Calendar.MONTH));
System.out.println("WEEK_OF_YEAR: " + calendar.get(Calendar.WEEK_OF_YEAR));
System.out.println("WEEK_OF_MONTH: " + calendar.get(Calendar.WEEK_OF_MONTH));
System.out.println("DATE: " + calendar.get(Calendar.DATE));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_YEAR: " + calendar.get(Calendar.DAY_OF_YEAR));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("DAY_OF_WEEK_IN_MONTH: "
+ calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));
System.out.println("HOUR: " + calendar.get(Calendar.HOUR));
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
System.out.println("ZONE_OFFSET: "
+ (calendar.get(Calendar.ZONE_OFFSET)/(60*60*1000))); // in hours
System.out.println("DST_OFFSET: "
+ (calendar.get(Calendar.DST_OFFSET)/(60*60*1000))); // in hours
</blockquote>
在 1.1 中添加。
Java文档java.util.GregorianCalendar。
本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。
构造函数
| 名称 | 说明 |
|---|---|
| GregorianCalendar() |
|
| GregorianCalendar(Int32, Int32, Int32, Int32, Int32, Int32) |
使用默认区域设置的默认时区构造给定日期和时间的 GregorianCalendar。 |
| GregorianCalendar(Int32, Int32, Int32, Int32, Int32) |
使用 |
| GregorianCalendar(Int32, Int32, Int32) |
|
| GregorianCalendar(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
| GregorianCalendar(Locale) |
使用给定的区域设置基于默认时区中的当前时间构造 a |
| GregorianCalendar(TimeZone, Locale) |
|
| GregorianCalendar(TimeZone) |
使用默认 |
字段
| 名称 | 说明 |
|---|---|
| Ad |
|
| AllStyles |
已过时.
用于 |
| Am |
字段的值 |
| AmPm |
已过时.
字段 |
| April |
|
| August |
|
| Bc |
|
| Date |
已过时.
月份的字段编号 |
| DayOfMonth |
已过时.
月份的字段编号 |
| DayOfWeek |
已过时.
字段编号 |
| DayOfWeekInMonth |
已过时.
字段编号 |
| DayOfYear |
已过时.
字段编号 |
| December |
|
| DstOffset |
已过时.
字段编号 |
| Era |
已过时.
用于和 |
| February |
|
| FieldCount |
被 |
| Friday |
指示星期五的 |
| Hour |
已过时.
用于 |
| HourOfDay |
已过时.
一天的字段编号 |
| January |
|
| July |
|
| June |
|
| Long |
已过时.
样式说明符,等效 |
| LongFormat |
用于 |
| LongStandalone |
一个样式说明符,用于 |
| March |
|
| May |
|
| Millisecond |
已过时.
字段编号 |
| Minute |
已过时.
字段编号 |
| Monday |
指示星期一的 |
| Month |
已过时.
月份的 |
| NarrowFormat |
用于 |
| NarrowStandalone |
用于和 |
| November |
|
| October |
|
| Pm |
|
| Saturday |
指示星期六的 |
| Second |
已过时.
分钟内第 |
| September |
|
| Short |
已过时.
样式说明符,等效 |
| ShortFormat |
用于 |
| ShortStandalone |
一个样式说明符,用于 |
| Sunday |
指示星期日的 |
| Thursday |
指示星期四的 |
| Tuesday |
指示星期二的 |
| Undecimber |
|
| Wednesday |
指示星期三的 |
| WeekOfMonth |
已过时.
字段编号 |
| WeekOfYear |
已过时.
字段编号 |
| Year |
已过时.
用于 |
| ZoneOffset |
已过时.
字段编号 |
属性
| 名称 | 说明 |
|---|---|
| AreFieldsSet |
如此 如果 |
| CalendarType |
返回此 |
| Class |
返回此 |
| Fields |
此日历当前设置时间的日历字段值。 (继承自 Calendar) |
| FirstDayOfWeek |
获取一周的第一天是什么;e. (继承自 Calendar) |
| GregorianChange |
获取公历日历更改日期。 - 或 - 设置 |
| Handle |
基础 Android 实例的句柄。 (继承自 Object) |
| IsTimeSet |
如此 如果当时的值 |
| IsWeekDateSupported |
|
| JniIdentityHashCode |
|
| JniPeerMembers |
|
| Lenient |
告知日期/时间解释是否宽松。 (继承自 Calendar) |
| MinimalDaysInFirstWeek |
获取一年中第一周所需的最短天数;e. (继承自 Calendar) |
| PeerReference |
|
| ThresholdClass |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| ThresholdType |
此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。 |
| Time |
返回一个 |
| TimeInMillis |
返回此日历的时间值(以毫秒为单位)。 (继承自 Calendar) |
| TimeZone |
获取时区。 - 或 - 使用给定时区值设置时区。 (继承自 Calendar) |
| WeeksInWeekYear |
返回此 |
| WeekYear |
返回由此 |
方法
| 名称 | 说明 |
|---|---|
| Add(CalendarField, Int32) |
根据日历的规则,将指定的(已签名)时间量添加到给定的日历字段中。 |
| After(Object) |
返回该值 |
| Before(Object) |
返回这 |
| Clear() |
设置此未定义的“#Epoch”>纪元 |
| Clear(CalendarField) |
设置给定的日历字段值和此 |
| Clone() |
创建并返回此对象的副本。 (继承自 Calendar) |
| CompareTo(Calendar) |
比较由两 |
| Complete() |
填写日历字段中任何未设置的字段。 (继承自 Calendar) |
| ComputeFields() |
将时间值(从 Epoch 偏移量)转换为日历字段值。 |
| ComputeTime() |
将日历字段值转换为时间值(与 Epoch 的毫秒偏移量)。 |
| Dispose() |
|
| Dispose(Boolean) |
|
| Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
| From(ZonedDateTime) |
从 |
| Get(CalendarField) |
返回给定日历字段的值。 (继承自 Calendar) |
| GetActualMaximum(CalendarField) |
返回指定日历字段可以具有的最大值,给定此 |
| GetActualMinimum(CalendarField) |
返回指定日历字段可以具有的最小值,给定此 |
| GetDisplayName(Int32, Int32, Locale) |
返回给定 |
| GetDisplayNames(Int32, Int32, Locale) |
返回一个 |
| GetGreatestMinimum(CalendarField) |
返回此 |
| GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
| GetLeastMaximum(CalendarField) |
返回此 |
| GetMaximum(CalendarField) |
返回此 |
| GetMinimum(CalendarField) |
返回此 |
| InternalGet(Int32) |
返回给定日历字段的值。 (继承自 Calendar) |
| IsLeapYear(Int32) |
确定给定年份是否为跃年。 |
| IsSet(CalendarField) |
确定给定日历字段是否设置了值,包括由方法调用触发 |
| JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
| Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
| NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
| Roll(CalendarField, Boolean) |
在给定时间字段上添加或减去一个时间单位(向上/向下),而无需更改较大的字段。 |
| Roll(CalendarField, Int32) |
将指定的 (signed) 金额添加到指定的日历字段,而不更改较大的字段。 (继承自 Calendar) |
| Set(CalendarField, Int32) |
将给定日历字段设置为给定值。 (继承自 Calendar) |
| Set(Int32, Int32, Int32, Int32, Int32, Int32) |
设置字段 |
| Set(Int32, Int32, Int32, Int32, Int32) |
设置日历字段 |
| Set(Int32, Int32, Int32) |
设置日历字段 |
| SetHandle(IntPtr, JniHandleOwnership) |
设置 Handle 属性。 (继承自 Object) |
| SetWeekDate(Int32, Int32, Int32) |
使用给定的日期说明符(周年、年和周和星期几)设置此 |
| ToArray<T>() |
|
| ToInstant() |
|
| ToString() |
返回对象的字符串表示形式。 (继承自 Object) |
| ToZonedDateTime() |
将此对象转换为 |
| UnregisterFromRuntime() |
|
| Wait() |
使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><> (继承自 Object) |
| Wait(Int64, Int32) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
| Wait(Int64) |
使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。 (继承自 Object) |
显式接口实现
| 名称 | 说明 |
|---|---|
| IComparable.CompareTo(Object) |
|
| IJavaPeerable.Disposed() |
|
| IJavaPeerable.DisposeUnlessReferenced() |
|
| IJavaPeerable.Finalized() |
|
| IJavaPeerable.JniManagedPeerState |
|
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
|
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
|
| IJavaPeerable.SetPeerReference(JniObjectReference) |
|
扩展方法
| 名称 | 说明 |
|---|---|
| GetJniTypeName(IJavaPeerable) |
获取实例 |
| JavaAs<TResult>(IJavaPeerable) |
尝试强制 |
| JavaCast<TResult>(IJavaObject) |
执行 Android 运行时检查的类型转换。 |
| JavaCast<TResult>(IJavaObject) |
|
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
尝试强制 |