java.util.Calendar
Posted 奋斗的少年WH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.util.Calendar相关的知识,希望对你有一定的参考价值。
package com.etc.usual; import java.util.Calendar; import java.util.Date; /** * public final static int YEAR = 1; * public final static int MONTH = 2; * public final static int WEEK_OF_YEAR = 3; * public final static int WEEK_OF_MONTH = 4; * public final static int DATE = 5; * public final static int DAY_OF_MONTH = 5; * public final static int DAY_OF_YEAR = 6; * public final static int DAY_OF_WEEK = 7; * public final static int DAY_OF_WEEK_IN_MONTH = 8; // * * * */ public class TestCalendar { public static void main(String[] args) { // TODO Auto-generated method stub Calendar c=Calendar.getInstance();//获取Calendar对象的一种方法 System.out.println("Calendar.YEAR:"+Calendar.YEAR); System.out.println("Calendar.MONTH:"+Calendar.MONTH); System.out.println("Calendar.DATE:"+Calendar.DATE); System.out.println("Calendar.WEEK_OF_YEAR:"+Calendar.WEEK_OF_YEAR); System.out.println("Calendar.WEEK_OF_MONTH:"+Calendar.WEEK_OF_MONTH); System.out.println("Calendar.DAY_OF_MONTH:"+Calendar.DAY_OF_MONTH); System.out.println("Calendar.DAY_OF_YEAR:"+Calendar.DAY_OF_YEAR); System.out.println("Calendar.DAY_OF_WEEK:"+Calendar.DAY_OF_WEEK); //查看Calendar是什么 c=Calendar.getInstance(); System.out.println("\nCalendar:"+c);//输出的是时间的详细信息 Date date=new Date(); System.out.println("date_getTime:"+date.getTime()); //setTime:使用给定的 Date 设置此 Calendar 的时间。 date.setYear(2015-1900); c.setTime(date); System.out.println("\nsetTime:"+c); System.out.println("setTime:"+c.get(Calendar.YEAR)); System.out.println("setTime:"+c.get(1)); //将Calendar转换为Date getTime():返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。 Date d1 = c.getTime(); System.out.println("\ngetTime:"+d1+"----"+d1.getYear()); //set(int field, int value) 将给定的日历字段设置为给定值。 c.set(Calendar.YEAR,2000); System.out.println("\nc.set(Calendar.YEAR,2000):"+c.get(Calendar.YEAR)); c.set(Calendar.MONTH,11); System.out.println("c.set(Calendar.MONTH,11):"+c.get(Calendar.MONTH)+"-------"+(c.getTime())); c.set(Calendar.MONTH,12); System.out.println("c.set(Calendar.MONTH,12):"+c.get(Calendar.MONTH)+"-------"+(c.getTime())); c.set(Calendar.DATE,20); System.out.println("c.set(Calendar.DATE,2000):"+c.get(Calendar.DATE)+"-------"+(c.getTime())); //set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。 c.set(2020,11,31); System.out.println("\nc.set(2020,11,31):"+c.getTime()); //set(int year, int month, int date, int hourOfDay, int minute, int second) //设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。 //c.set(2000,1,10,23,55,20); c.set(2017,0,1,7,59,60); //闰秒:2017年1月1日7时59分59秒 System.out.println("\nc.set(2022,1,10,23,55,20):"+c.getTime()); //setLenient(boolean lenient)指定日期/时间解释是否是宽松的。 // c.setLenient(true); // c.set(Calendar.MONTH,15); // System.out.println("\nc.setLenient(true):"+c.getTime()); // c.setLenient(false); // c.set(Calendar.MONTH,2); // System.out.println("\nc.setLenient(false):"+c.getTime()); //getActualMaximum(int field) 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。 //能被4整除且又能不能被100整除 是闰年 能直接被400整除也是闰年 System.out.println("\ngetActualMaximum(Calendar.YEAR):"+c.getActualMaximum(Calendar.YEAR)); System.out.println("getActualMaximum(Calendar.MONTH):"+c.getActualMaximum(Calendar.MONTH)); System.out.println("getActualMaximum(Calendar.DATE):"+c.getActualMaximum(Calendar.DATE));//返回的是指定年月的天数最大值 System.out.println("getActualMaximum(Calendar.SECOND):"+c.getActualMaximum(Calendar.SECOND));//返回的是指定年月的天数最大值 //getActualMinimum(int field) 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最小值。 System.out.println("\ngetActualMinimum(Calendar.YEAR):"+c.getActualMinimum(Calendar.YEAR));//年份从公元元年计时 System.out.println("getActualMinimum(Calendar.MONTH):"+c.getActualMinimum(Calendar.MONTH)); System.out.println("getActualMinimum(Calendar.DATE):"+c.getActualMinimum(Calendar.DATE)); //getFirstDayOfWeek() 获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。 System.out.println("\ngetFirstDayOfWeek():"+c.getFirstDayOfWeek()); System.out.println("Calendar.SUNDAY:"+Calendar.SUNDAY); System.out.println("Calendar.MONDAY:"+Calendar.MONDAY); //getMaximum(int field) 返回此 Calendar 实例给定日历字段的最大值 //getMaximum是指整个的年月日范围内的最大值 例如:天数就是在28,29,30,31之间的最大值 //getActualMaximum是指日期设定好的年月日的当前最大值 例如:天数就是设定的月份的实际天数最大值 System.out.println("\nc.getMaximum(Calendar.YEAR):"+c.getMaximum(Calendar.YEAR)); System.out.println("c.getMaximum(Calendar.MONTH):"+c.getMaximum(Calendar.MONTH)); System.out.println("c.getMaximum(Calendar.DATE):"+c.getMaximum(Calendar.DATE));//最大值取决于日历系统实例的特定参数。 即日历的值 System.out.println("c.getMaximum(Calendar.SECOND):"+c.getMaximum(Calendar.SECOND)); //add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 //Sun Jan 01 08:00:00 CST 2017 c.add(Calendar.YEAR,3); System.out.println("\nc.add(Calendar.YEAR,3):"+c.getTime()); c.add(Calendar.YEAR,-3); System.out.println("c.add(Calendar.YEAR,-3):"+c.getTime()); // c.add(Calendar.MONTH,11);//添加11个月,不是设置月份 // System.out.println("c.add(Calendar.MONTH,11):"+c.getTime()); // c.add(Calendar.MONTH,5);//当前是12月,添加5个月后,年份加一,月份变为五月 // System.out.println("c.add(Calendar.MONTH,5):"+c.getTime()); //roll(int field, int amount) 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。 c.roll(Calendar.YEAR,3); System.out.println("\nc.roll(Calendar.YEAR,3):"+c.getTime()); c.roll(Calendar.MONTH,11);//添加11个月,不是设置月份 System.out.println("c.roll(Calendar.MONTH,11):"+c.getTime()); c.roll(Calendar.MONTH,5);//当前是12月,添加5个月后,年份没有加一,而月份变成了五月 System.out.println("c.roll(Calendar.MONTH,5):"+c.getTime()); //after(Object when) ) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后。 Calendar c2=Calendar.getInstance(); System.out.println("\nd1.after(d2):"+c.after(c2)); //c:2020 c2:2017 //before(Object when) ) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前。 System.out.println("d1.before(d2):"+c.before(c2)); } }
Calendar.YEAR:1
Calendar.MONTH:2
Calendar.DATE:5
Calendar.WEEK_OF_YEAR:3
Calendar.WEEK_OF_MONTH:4
Calendar.DAY_OF_MONTH:5
Calendar.DAY_OF_YEAR:6
Calendar.DAY_OF_WEEK:7
Calendar:java.util.GregorianCalendar[time=1493957201656,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2017,MONTH=4,WEEK_OF_YEAR=18,WEEK_OF_MONTH=1,DAY_OF_MONTH=5,DAY_OF_YEAR=125,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=6,SECOND=41,MILLISECOND=656,ZONE_OFFSET=28800000,DST_OFFSET=0]
date_getTime:1493957201657
setTime:java.util.GregorianCalendar[time=1430798801657,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=4,WEEK_OF_YEAR=19,WEEK_OF_MONTH=2,DAY_OF_MONTH=5,DAY_OF_YEAR=125,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=0,HOUR_OF_DAY=12,MINUTE=6,SECOND=41,MILLISECOND=657,ZONE_OFFSET=28800000,DST_OFFSET=0]
setTime:2015
setTime:2015
getTime:Tue May 05 12:06:41 CST 2015----115
c.set(Calendar.YEAR,2000):2000
c.set(Calendar.MONTH,11):11-------Tue Dec 05 12:06:41 CST 2000
c.set(Calendar.MONTH,12):0-------Fri Jan 05 12:06:41 CST 2001
c.set(Calendar.DATE,2000):20-------Sat Jan 20 12:06:41 CST 2001
c.set(2020,11,31):Thu Dec 31 12:06:41 CST 2020
c.set(2022,1,10,23,55,20):Sun Jan 01 08:00:00 CST 2017
getActualMaximum(Calendar.YEAR):292278994
getActualMaximum(Calendar.MONTH):11
getActualMaximum(Calendar.DATE):31
getActualMaximum(Calendar.SECOND):59
getActualMinimum(Calendar.YEAR):1
getActualMinimum(Calendar.MONTH):0
getActualMinimum(Calendar.DATE):1
getFirstDayOfWeek():1
Calendar.SUNDAY:1
Calendar.MONDAY:2
c.getMaximum(Calendar.YEAR):292278994
c.getMaximum(Calendar.MONTH):11
c.getMaximum(Calendar.DATE):31
c.getMaximum(Calendar.SECOND):59
c.add(Calendar.YEAR,3):Wed Jan 01 08:00:00 CST 2020
c.add(Calendar.YEAR,-3):Sun Jan 01 08:00:00 CST 2017
c.roll(Calendar.YEAR,3):Wed Jan 01 08:00:00 CST 2020
c.roll(Calendar.MONTH,11):Tue Dec 01 08:00:00 CST 2020
c.roll(Calendar.MONTH,5):Fri May 01 08:00:00 CST 2020
d1.after(d2):true
d1.before(d2):false
以上是关于java.util.Calendar的主要内容,如果未能解决你的问题,请参考以下文章
java.util.Calendar.get* 和 java.util.Calendar.set* 被阻塞
Java.util.Calendar.getInstance()方法实例