时间可以用这个
Calendar类的属性有很多,
YEAR 年
MONTH 月(注意:从0开始算起,最大11;0代表1月,11代表12月)
DATE 天
HOUR 时
MINUTE分
SECOND秒
所有方法
//根据日历的规则,为给定的日历字段添加或减去指定的时间量。
abstract void add(int field, int amount)
//判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
boolean after(Object when)
// 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
boolean before(Object when)
//给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。
int getActualMaximum(int field)
// 给定此 Calendar 的时间值,返回指定日历字段可能拥有的最小值。
int getActualMinimum(int field)
// 获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。
int getFirstDayOfWeek()
//返回此 Calendar 实例给定日历字段的最高的最小值。
abstract int getGreatestMinimum(int field)
//使用默认时区和语言环境获得一个日历。
static Calendar getInstance()
//使用默认时区和指定语言环境获得一个日历。
static Calendar getInstance(Locale aLocale)
// 使用指定时区和默认语言环境获得一个日历。
static Calendar getInstance(TimeZone zone)
//使用指定时区和语言环境获得一个日历。
static Calendar getInstance(TimeZone zone, Locale aLocale)
//返回此 Calendar 实例给定日历字段的最低的最大值。
abstract int getLeastMaximum(int field)
//返回此 Calendar 实例给定日历字段的最大值。
abstract int getMaximum(int field)
// 获取一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则此方法将返回 1。
int getMinimalDaysInFirstWeek()
// 设置一星期的第一天是哪一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。
void setFirstDayOfWeek(int value)
// 设置一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则使用值 1 调用此方法。
void setMinimalDaysInFirstWeek(int value)
// 使用给定的 Date 设置此 Calendar 的时间。
void setTime(Date date)
// 用给定的 long 值设置此 Calendar 的当前时间值。
void setTimeInMillis(long millis)
//返回此日历的字符串表示形式。
String toString()
set
Calendar ca = Calendar.getInstance();
//修改日历的指定时间 ca.setTime(sdf.parse(“2021-09-20 16:01:01:100”)); System.out.println(“修改日期后的日历时间是:” + sdf.format(ca.getTime())); ca.set(Calendar.MONTH,Calendar.JANUARY); System.out.println(“修改月份后的日历时间是:” + sdf.format(ca.getTime()));
get
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”);
System.out.println(“当前时间是:” + sdf.format(new Date()));
Calendar ca = Calendar.getInstance();
System.out.println(“当前年份:” + ca.get(Calendar.YEAR));
System.out.println(“当前月:” + ca.get(Calendar.MONTH));// 初始月份是从0开始,所以输出值比是几月份小1
System.out.println(“当前日期:” + ca.get(Calendar.DATE));
System.out.println(“当前年份第几个星期:” + ca.get(Calendar.WEEK_OF_YEAR));
System.out.println(“当前月份第几个星期:” + ca.get(Calendar.WEEK_OF_MONTH));
System.out.println(“当前年份第几天:” + ca.get(Calendar.DAY_OF_YEAR));
System.out.println(“当前月份第几天:” + ca.get(Calendar.DAY_OF_MONTH));
System.out.println(“当前星期第几天:” + ca.get(Calendar.DAY_OF_WEEK));
System.out.println(“当前月份第几个星期:” + ca.get(Calendar.DAY_OF_WEEK_IN_MONTH));
System.out.println(“当天第几个小时:” + ca.get(Calendar.HOUR_OF_DAY));
System.out.println(“当前小时第几分钟:” + ca.get(Calendar.MINUTE));
System.out.println(“当前分钟第几秒:” + ca.get(Calendar.SECOND));
System.out.println(“当前秒数第几毫秒:” + ca.get(Calendar.MILLISECOND));
}
Calendar calendar=Calendar.getInstance(); //通过getInstance方法获取Calendar的引用;
calendar.setTime(new Date()); System.out.println(“现在时间是:”+new Date());
String year=String.valueOf(calendar.get(Calendar.YEAR)); //现在是那一年 String month=String.valueOf(calendar.get(Calendar.MONTH)+1); //现在是几月份 String day=String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)); //现在是月份的第几天 String week=String.valueOf(calendar.get(Calendar.DAY_OF_WEEK)-1); //现在是星期几 System.out.println(“现在时间是:”+year+“年”+month+“月”+day+“日,星期”+week); long year2016=calendar.getTimeInMillis(); calendar.set(1989,9,26);//这里与真实的月份之间相差1 //设置时间 (year,month,day) long year1989=calendar.getTimeInMillis(); long days=(year2016-year1989)/(10006060*24); System.out.println(“今天和1989年10月26日相隔”+days+“天,”+“也就是说我在这个美丽的星球上已经幸福的生活了”+days+“天。”); System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); //获取设置后的那天是当年中的第几天 System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); //获取设置后的那天是当月中的第几天 System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//获取设置后的那天是当星期中的第几天
二
Calendar成员变量当中,用get,set
YEAR这个字段的含义是年份 2017-1-1,那么执行:System.out.println(instance.get(Calendar.YEAR)) 值就为2017
2MONTH 月份,2017-9-1,
System.out.println(instance.get(Calendar.MONTH));值8,值得注意的是在Calendar当中MONTH的开始月份为0
3 WEEK_OF_YEAR 当前年的总周数当中,当前日期属于第几周System.out.println(“WEEK_OF_YEAR:”+instance.get(Calendar.WEEK_OF_YEAR));System.out.println(“一年有”+instance.getActualMaximum(Calendar.WEEK_OF_YEAR)+“个周”);打印出的结果为:WEEK_OF_YEAR:12一年有52个周
4 DATE当前时间为多少号,例如今天为2017-3-20,
System.out.println(instance.get(Calendar.DATE));打印的值为:20
5 DAY_OF_MONTH这个月的总天数当中当前过了多少天(其实它的值和上面的DATE的值是一样的)System.out.println(“DAY_OF_MONTH:”+instance.get(Calendar.DAY_OF_MONTH));System.out.println(“当前月有”+instance.getActualMaximum(Calendar.DAY_OF_MONTH)+“天”);打印的结果为:DAY_OF_MONTH:20当前月有31天6 DAY_OF_YEAR当年的所有天数当中,当天过了多少天System.out.println(“DAY_OF_YEAR:”+instance.get(Calendar.DAY_OF_YEAR));System.out.println(“当前年份有”+instance.getActualMaximum(Calendar.DAY_OF_YEAR)+“天”);打印的结果为:DAY_OF_YEAR:79当前年份有365天
7 DAY_OF_WEEK一周7天当中,当前时间是星期几(1-7),值得注意的是一周的开始是星期日,结束是星期六,如果今天是星期一,那么instance.get(Calendar.DAY_OF_WEEK)的值就应该是2
8 DAY_OF_WEEK_IN_MONTH指的是当前时间是所在当前月的第几个星期,一个月的1号为第一周,8号为第二周。
9 WEEK_OF_MONTH同样是按当前时间在当前月的星期数,可是它的值不同于8的DAY_OF_WEEK_IN_MONTH,它计算当前星期的标准不同,例如说这个月的1号是星期3,那么是第一周,那么到了5号星期日就已经是第二周了,如果按8的DAY_OF_WEEK_IN_MONTH的计算5号才第一周System.out.println(“WEEK_OF_MONTH:”+instance.get(Calendar.WEEK_OF_MONTH));System.out.println(“当前月有”+instance.getActualMaximum(Calendar.WEEK_OF_MONTH)+“个周”);打印出来的结果为:WEEK_OF_MONTH:4当前月有5个周计算出来是4.4个周,它显示的为5个周
2 AM_PM用于判断当前时间是AM,还是PM,若是AM值为0,若是PM为1
2.1HOUR显示当前时间的12小时制2.2HOUR_OF_DAY显示当前时间的24小时制2.3MINUTE显示当前时间的分钟数2.4SECOND显示当前时间的秒数2.5MILLISECOND显示当前时间的毫秒数
三 add
add(f, delta) 将 delta 添加到 f 字段中
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss:SSS”); System.out.println(“当前时间是:” + sdf.format(new Date()));
Calendar ca = Calendar.getInstance(); //修改日历的指定时间 ca.setTime(sdf.parse(“2021-10-31 16:01:01:100”)); System.out.println(“修改日期后的日历时间是:” + sdf.format(ca.getTime()));
ca.add(Calendar.MONTH,1);
增加年月
System.out.println(“修改月份后的日历时间是:” + sdf.format(ca.getTime()));
与 set() 不同,add() 强迫日历系统立即重新计算日历的毫秒数和所有字段
计算时间差
long mill is of day =24*60 60 1000
(cal.gettimeinmillis()-yuanlai.gettimeinmillis())/millisofday
结果是long型
算出来是多少天