GregorianCalendar类的学习
GregorianCalendar是Calendar的一个特定子类,它提供了世界上大多数国家使用的标准日历系统。
GregorianCalendar是一种混合日历,在单个不连续点的支持下,同时支持儒略历和公历系统。默认对应公历创立时的公历日期(有的国家/地区创立于1582年10月15日,有的则更晚)。调用者可以通过调用setGregorianChange()来更改开始日期。
日历,在那些最早采用公历的国家/地区,1582年10月4日(儒略历)随后是1582年10月15日(公历)。这个日历正确地模拟了这些变化。在公历开始之前,公历实现了儒略历。公历和儒略历的区别是闰年规则。儒略历指定每四年为闰年,而公历忽略不能被400整除的世纪年。
GregorianCalendar可以实现预期的公历和儒略历。大测试提示:即可以通过在时间上无限向后或向前外推当前规则来计算日期。因此,GregorianCalendar可用于生成所有年份的有意义且一致的结果。但采用现代儒略历规则时,公历日历从公元4年3月1日开始计算后,得到的日期才是准确的。在此之前,闰年规则的应用没有规律性。公元前45年以前,没有儒略历。
公历创立之前,新年是3月25日。为了避免混淆,这个日历总是用1月1日作为新年。如果希望日期在公历转换之前,并且在1月1日和3月24日之间,可以进行手动调整。
星期字段的计算值范围是1到53。一年的第一周从getFirstDayOfWeek()的最早7天开始,至少包括该年getMinimalDaysInFirstWeek()的天数。它取决于getMinimalDaysInFirstWeek()、getFirstDayOfWeek()的值以及1月1日是星期几。一年的第一周和下一年的第一周之间的周按顺序从2到52或53(根据需要)编号。
例如,1998年1月1日是星期四。如果getFirstDayOfWeek()是星期一,getMinimalDaysInFirstWeek()是4(这些值反映了ISO 8601和许多国家标准),则1998年的第一周从1997年12月29日开始,到1998年1月4日结束。但是,大测试注意:如果getFirstDayOfWeek()是星期日,那么1998年的第一周从1998年1月4日开始,到1998年1月10日结束;1998年的头三天是1997年第53周的一部分。
星期几字段的计算值范围是从0到6。一个月的第一周(一个月中的星期= 1)是该月中至少连续getMinimalDaysInFirstWeek()天的最早日期,在getFirstDayOfWeek()的前一天结束。与一年的第一周Examda不同,一个月的第一周可能会短于7天,并且不一定要从getFirstDayOfWeek()的那一天开始,也不包括上个月的日期。第一周之前的月份日期的星期是0。
例如,如果getFirstDayOfWeek()是星期日,getMinimalDaysInFirstWeek()是4,则1998年1月的第一周是从1月4日星期日到1月10日星期六。这些天的星期是1。从1月1日星期四到1月3日星期六的星期是0。如果getMinimalDaysInFirstWeek()变为3,则从1月1日到1月3日的WEEK_OF_MONTH为1。
简单演示
导入Java . util . *;
public类Gregorian calendar best
{
public static void main(string[]args){
//构造当前日期的date对象
Gregorian calendar date = new Gregorian calendar();
//获取当前日期的日期
int today = date . Get(calendar . day _ of _ month);
//获取当前日期的月份
int month = date . Get(calendar . month);
//将当前日期改为当月的第一天
date . set(calendar . day _ of _ month,1);
//获取当前星期几(1-周日)
int week = date . Get(calendar . day _ of _ week);
//打印日历头
system . out . println(" sun mon tue wed thu frisat ");
for (int i = Calendar。周日;I <工作日;i++)
{
system . out . print(" ");
}
//每天循环打印
Do
{
/Get当前数
int day = date . Get(calendar . day _ of _ month);
System.out.printf("%3d ",day);
//是否当天的编号
if(day = = today)
{
system . out . print(" * ");
} else {
system . out . print(" ");
}
/星期六换行
if(weekday = = calendar . Saturday)
{
system . out . println();
}
/次日
date . add(calendar . day _ of _ month,1);
//第二天是星期几
week = date . get(calendar . day _ of _ week);
}
while(date . get(Calendar。月)==月);
//最后一个换行符
if (weekDay!=日历。周日)
{
system . out . println();
}
}
}
0条评论