StupidBeauty
Read times:2238Posted at: - no title specified

安卓18开发文档翻译:GregorianCalendar

extends Calendar

java.lang.Object

   ↳

java.util.Calendar

   ↳

java.util.GregorianCalendar

类概述

GregorianCalendar Calendar 的一个实体子类,提供了世界上大部分人所使用的标准日历。

标准(公历Gregorian)日历,包含两个时期,公元前(BC)和公元后(AD)。

这个实现中,能够处理单个的日期间断,默认情况下,对应于公历被制订的日期(在某些国家,是1582 年10月 15 日,其它国家的日期更迟)。调用者,可通过调用 setGregorianChange() 来改变被砍掉的日期。

由于历史原因,在那些率先开始采用公历的国家,1582 年10月4日的下一天是1582 年10月15日。这个日历实现中,正确地处理了这个问题。对于位于公历砍掉的日期之前的日期, GregorianCalendar 实现的是儒略历(Julian)。 公历 与儒略历之间唯一的差别就是闰年规则。儒略 历中,每隔4年都是一个闰年,而公历中呢,对于那些 不能被400 整 的整百年份则不当作是闰年。

GregorianCalendar实现的是 预计算的 公历和儒略历。也就是说,会根据当前的规则,向前及向后无限计算,以产生日期数据。这样,就可以用 GregorianCalendar 来针对所有年份计算出有意义和稳定的结果。然而,使用 GregorianCalendar 获取到的日期,出于历史原因,仅仅是从公元后4年3月1日开始往后的日期才是准确的,在那之前采用的是儒略历规则。在那个日子之前,闰年的规则是不符合常规的,并且,在公元前45年之前,儒略历甚至也不存在。

在采用公历之前,新年的日子是3月25日。为了避免混淆,此日历实现中会一直使用1月1日。如果说希望对于公历之前的日子采用另一个不同的新年日子,并且要采用的日子位于1月1日和3月24日之间的话,则可以进行手动的调整。

对于WEEK_OF_YEAR 字段,所计算出来的值的范围是1到53。一年中的第1个星期,指的是,符合以下条件的最早的7天:从 getFirstDayOfWeek() 开始;并且最少包含着该年中的 getMinimalDaysInFirstWeek() 天。因此,它取决于以下三个值: getMinimalDaysInFirstWeek() getFirstDayOfWeek() ;以及,1月1日对应着的星期中数字。某一年的第1个星期与下一年的第1个星期之间的那些星期,会按照顺序被编号为25253(必要的话)

例如,1998年1月1日是星期四。如果, getFirstDayOfWeek() 是星期一( MONDAY ),并且 getMinimalDaysInFirstWeek() 4(这些值,符合ISO 8601和狠多国家标准),那么,1998 年的第1个星期,从1997 年12月29日开始,到1998 年1月4日结束。那么,假如, getFirstDayOfWeek() 是星期天( SUNDAY ),则,1998 年的第1个星期从1998 年1月4日开始,到1998 年1月10日结束;这样,1998 年最开始的3天属于1997 年的第53 个星期。

对于WEEK_OF_MONTH 字段,计算出来的值的范围是0或1到4或5。一个月中的第1个星期(对应着 WEEK_OF_MONTH = 1 的那些天),指的是,满足以下条件的最早的那几天:该月中的最少 getMinimalDaysInFirstWeek() 个连续天;结束于 getFirstDayOfWeek() 之前的那一天。与一年中的第1个星期不同,一个月中的第1个星期可以少于7天,不需要从 getFirstDayOfWeek()开始 ,并且不会包含上一个月的日子。一个月中,第1个星期之前的那些日子,其 WEEK_OF_MONTH 为0。

例如,如果getFirstDayOfWeek() 是星期天( SUNDAY ),并且 getMinimalDaysInFirstWeek() 4,则,1998 年1月的第一个星期是从1月4日星期天到1月10日星期六。对于这些日子, WEEK_OF_MONTH 为1。1月1日星期四到1月3日星期六,那些日子,其 WEEK_OF_MONTH 为0。如果 getMinimalDaysInFirstWeek() 被改为3,则,1月1日到1月3日的 WEEK_OF_MONTH 为1。

示例:

 //获取支持GMT-08:00(太平洋标准时间)(Pacific Standard Time)的那些编号(ids)

 String[] ids = TimeZone.getAvailableIDs(-8 * 60 * 60 * 1000);

 // 如果未返回任何编号,则出错了。停止工作。

 if (ids.length == 0)

     System.exit(0);

  // 开始输出内容

 System.out.println("Current Time");

 // 创建一个太平洋标准时间的时区

 SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, ids[0]);

 // 设置规则,指明日光节省时

 pdt.setStartRule(Calendar.APRIL, 1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);

 pdt.setEndRule(Calendar.OCTOBER, -1, Calendar.SUNDAY, 2 * 60 * 60 * 1000);

 // 使用太平洋日光时区创建一个GregorianCalendar,并且设置其日期时间为当前日期时间

 Calendar calendar = new GregorianCalendar(pdt);

 Date trialTime = new Date();

 calendar.setTime(trialTime);

 // 输出一砣有趣的信息

 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

参考

公有构造函数

public GregorianCalendar ()

自此版本开始引入 应用编程接口级别1

构造一个新的 GregorianCalendar ,并且使用默认的语系( Locale )和时区( TimeZone )来将它初始化为当前的日期和时间。

public GregorianCalendar (int year, int month, int day, int hour, int minute)

自此版本开始引入 应用编程接口级别1

构造一个新的 GregorianCalendar ,并且使用默认的语系( Locale )和时区( TimeZone )来将它初始化为指定的日期和时间。

参数

year

int: 年。

month

int: 月。

day

int: 月份中的日子。

hour

int: 小时

minute

int: 分钟

未知美人

色狗

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4